panrouter 6.2.1 → 6.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2) hide show
  1. package/package.json +1 -1
  2. package/pool-worker.mjs +33 -14
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "panrouter",
3
- "version": "6.2.1",
3
+ "version": "6.3.0",
4
4
  "description": "让 Claude Code 免费使用 DeepSeek 等模型,无需 API Key",
5
5
  "type": "module",
6
6
  "bin": {
package/pool-worker.mjs CHANGED
@@ -256,11 +256,7 @@ async function doRestart() {
256
256
  clearTimeout(reconnectTimer);
257
257
  reconnectTimer = null;
258
258
  }
259
- const serverOk = await ensureServer();
260
- if (!serverOk) {
261
- log("代理服务重启失败", "ERR");
262
- process.exit(1);
263
- }
259
+ await ensureServer();
264
260
  reconnectDelay = WS_RECONNECT_BASE;
265
261
  writePid();
266
262
  connectToHub();
@@ -403,7 +399,7 @@ function isPortOpen(port) {
403
399
 
404
400
  // ─── 后台确保 9router 在运行(不阻塞注册)───────────────────────────────
405
401
 
406
- let _serverReady = false; // 9router 是否可用
402
+ let _serverReady = false;
407
403
 
408
404
  function isServerReady() { return _serverReady; }
409
405
 
@@ -414,19 +410,42 @@ async function ensureServer() {
414
410
  return;
415
411
  }
416
412
 
417
- // 跑你的完整脚本(检查→安装→注入DB→启动,全部包了)
418
413
  const setupScript = path.join(__dirname, "setup-9router.cjs");
419
- if (fs.existsSync(setupScript)) {
420
- log("正在执行 9router 部署脚本...");
421
- spawn(process.execPath, [setupScript], {
422
- cwd: __dirname, stdio: "ignore", detached: true,
423
- }).unref();
414
+ if (!fs.existsSync(setupScript)) {
415
+ log("找不到 setup-9router.cjs,直接尝试启动 9router", "WARN");
416
+ trySpawn9router();
417
+ poll9router();
418
+ return;
424
419
  }
425
420
 
426
- // 一直轮询到 9router 起来为止(不限次数,不阻塞注册)
421
+ // 第一步:跑你的脚本(安装+注入数据库)
422
+ log("正在执行 9router 安装与数据库配置...");
423
+ const child = spawn(process.execPath, [setupScript], {
424
+ cwd: __dirname, stdio: "ignore", detached: true,
425
+ });
426
+ child.unref();
427
+
428
+ // 第二步:脚本退出后直接 spawn 9router(静默不弹窗)
429
+ child.on("exit", () => {
430
+ log("部署脚本完成,正在启动 9router...");
431
+ trySpawn9router();
432
+ });
433
+
434
+ // 第三步:后台轮询端口
427
435
  poll9router();
428
436
  }
429
437
 
438
+ function trySpawn9router() {
439
+ try {
440
+ const r = spawn("9router", [], {
441
+ detached: true, windowsHide: true, stdio: "ignore",
442
+ });
443
+ r.unref();
444
+ } catch (e) {
445
+ log(`启动 9router 失败: ${e.message}`, "ERR");
446
+ }
447
+ }
448
+
430
449
  async function poll9router() {
431
450
  for (let i = 0; ; i++) {
432
451
  if (await isPortOpen(SERVER_PORT)) {
@@ -435,7 +454,7 @@ async function poll9router() {
435
454
  return;
436
455
  }
437
456
  if (i < 60) await new Promise((r) => setTimeout(r, 1000));
438
- else await new Promise((r) => setTimeout(r, 5000)); // 60秒后放慢频率
457
+ else await new Promise((r) => setTimeout(r, 5000));
439
458
  }
440
459
  }
441
460