@mrrisega/dsh-remote 0.6.11 → 0.6.12

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 (44) hide show
  1. package/dsh-setup.mjs +55 -15
  2. package/package.json +3 -3
  3. package/packages/dsh-remote-web/lib/client.js +137 -0
  4. package/packages/dsh-remote-web/lib/fix-prompt.js +160 -0
  5. package/packages/dsh-remote-web/lib/index.js +748 -18
  6. package/packages/dsh-remote-web/lib/offline-update.mjs +66 -0
  7. package/packages/dsh-remote-web/lib/tarball-update.js +442 -0
  8. package/packages/dsh-remote-web/package.json +5 -1
  9. package/packages/dsh-remote-web/runtime/clients/dsh-remote/dsh-bridge.mjs +1451 -0
  10. package/packages/dsh-remote-web/runtime/clients/dsh-remote/dsh-events.mjs +1991 -0
  11. package/packages/dsh-remote-web/runtime/clients/dsh-remote/e2ee-client.mjs +728 -0
  12. package/packages/dsh-remote-web/runtime/clients/dsh-remote/e2ee-shim-script.js +767 -0
  13. package/packages/dsh-remote-web/runtime/clients/dsh-remote/e2ee-shim.mjs +163 -0
  14. package/packages/dsh-remote-web/runtime/clients/dsh-remote/mobile-adapter.mjs +1575 -0
  15. package/packages/dsh-remote-web/runtime/clients/dsh-remote/package.json +11 -0
  16. package/packages/dsh-remote-web/runtime/clients/dsh-remote/src/lifecycle.mjs +45 -0
  17. package/packages/dsh-remote-web/runtime/clients/dsh-remote/wechat-channel.mjs +2825 -0
  18. package/packages/dsh-remote-web/runtime/clients/dsh-remote/wechat-runtime.mjs +1984 -0
  19. package/packages/dsh-remote-web/runtime/clients/dsh-web/native.html +2526 -0
  20. package/packages/dsh-remote-web/runtime/dsh-setup.mjs +2390 -0
  21. package/packages/dsh-remote-web/runtime/node_modules/ws/LICENSE +20 -0
  22. package/packages/dsh-remote-web/runtime/node_modules/ws/README.md +548 -0
  23. package/packages/dsh-remote-web/runtime/node_modules/ws/browser.js +8 -0
  24. package/packages/dsh-remote-web/runtime/node_modules/ws/index.js +22 -0
  25. package/packages/dsh-remote-web/runtime/node_modules/ws/lib/buffer-util.js +131 -0
  26. package/packages/dsh-remote-web/runtime/node_modules/ws/lib/constants.js +19 -0
  27. package/packages/dsh-remote-web/runtime/node_modules/ws/lib/event-target.js +292 -0
  28. package/packages/dsh-remote-web/runtime/node_modules/ws/lib/extension.js +203 -0
  29. package/packages/dsh-remote-web/runtime/node_modules/ws/lib/limiter.js +55 -0
  30. package/packages/dsh-remote-web/runtime/node_modules/ws/lib/permessage-deflate.js +530 -0
  31. package/packages/dsh-remote-web/runtime/node_modules/ws/lib/receiver.js +743 -0
  32. package/packages/dsh-remote-web/runtime/node_modules/ws/lib/sender.js +607 -0
  33. package/packages/dsh-remote-web/runtime/node_modules/ws/lib/stream.js +161 -0
  34. package/packages/dsh-remote-web/runtime/node_modules/ws/lib/subprotocol.js +62 -0
  35. package/packages/dsh-remote-web/runtime/node_modules/ws/lib/validation.js +152 -0
  36. package/packages/dsh-remote-web/runtime/node_modules/ws/lib/websocket-server.js +562 -0
  37. package/packages/dsh-remote-web/runtime/node_modules/ws/lib/websocket.js +1407 -0
  38. package/packages/dsh-remote-web/runtime/node_modules/ws/package.json +74 -0
  39. package/packages/dsh-remote-web/runtime/node_modules/ws/wrapper.mjs +21 -0
  40. package/packages/dsh-remote-web/test/connect-stuck-visibility.test.mjs +396 -0
  41. package/packages/dsh-remote-web/test/diag-report.test.mjs +236 -0
  42. package/packages/dsh-remote-web/test/fix-prompt.test.mjs +170 -0
  43. package/packages/dsh-remote-web/test/runtime-bundle.test.mjs +198 -0
  44. package/packages/dsh-remote-web/test/tarball-update.test.mjs +460 -0
@@ -0,0 +1,11 @@
1
+ {
2
+ "name": "@dsh-remote/client",
3
+ "version": "0.2.0",
4
+ "description": "dsh-remote bridge: tunnel-mode WebSocket client to relay-router (WebRTC/P2P removed)",
5
+ "type": "module",
6
+ "main": "src/index.js",
7
+ "dependencies": {
8
+ "ws": "^8.18.0"
9
+ },
10
+ "license": "PolyForm-Noncommercial-1.0.0"
11
+ }
@@ -0,0 +1,45 @@
1
+ export function childStopped(child) {
2
+ return !child || child.exitCode !== null || child.signalCode !== null;
3
+ }
4
+
5
+ /**
6
+ * 停机:先「请它优雅退出」,超时才强杀。
7
+ *
8
+ * 为什么不能只 `kill()`:Windows 上 Node 的 `child.kill()` / `process.kill()`
9
+ * 是**无条件 TerminateProcess** —— 目标进程的 SIGTERM/SIGINT 处理函数**根本不会执行**。
10
+ * 对 bridge 就意味着退出钩子里的 `notifystop` 永远发不出去,腾讯侧会一直以为微信通道在线
11
+ *(dsh-bridge.mjs 里原先就记着这条已知缺口,只是没人修)。
12
+ *
13
+ * 而 IPC 通道(`child.send` / `process.on("message")`)在 Windows 上是可用的命名管道,
14
+ * 因此是唯一能真正让子进程跑完退出流程的机制。约定:父进程先发 `{type:"shutdown"}`,
15
+ * 等它自己退;超时(或本来就没有通道,例如被其它方式拉起的进程)再退回 `kill()`。
16
+ *
17
+ * @param {import("node:child_process").ChildProcess|null|undefined} child
18
+ * @param {{timeoutMs?:number, intervalMs?:number}} [opts]
19
+ * @returns {Promise<"graceful"|"killed"|"already-stopped"|"none">}
20
+ * graceful = 子进程自己退的(退出钩子跑完了);killed = 我强杀的
21
+ */
22
+ export async function stopChildGracefully(child, opts = {}) {
23
+ if (!child) return "none";
24
+ if (childStopped(child)) return "already-stopped";
25
+ const timeoutMs = Number.isFinite(opts.timeoutMs) ? opts.timeoutMs : 3000;
26
+ const intervalMs = Number.isFinite(opts.intervalMs) ? opts.intervalMs : 100;
27
+ try {
28
+ if (child.connected && typeof child.send === "function") {
29
+ child.send({ type: "shutdown" });
30
+ } else {
31
+ child.kill(); // 没有 IPC 通道(或已断开)→ 只能强杀,调用方据此如实报告降级
32
+ return "killed";
33
+ }
34
+ } catch {
35
+ try { child.kill(); } catch { /* 已退出 */ }
36
+ return "killed";
37
+ }
38
+ const deadline = Date.now() + timeoutMs;
39
+ while (Date.now() < deadline && !childStopped(child)) {
40
+ await new Promise((r) => setTimeout(r, intervalMs));
41
+ }
42
+ if (childStopped(child)) return "graceful";
43
+ try { child.kill(); } catch { /* 已退出 */ }
44
+ return "killed";
45
+ }