@lsby/net-core 0.3.35 → 0.3.37

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 (49) hide show
  1. package/dist/bin/gen-type/addition.cjs +14 -0
  2. package/dist/bin/gen-type/bin.cjs +51 -8
  3. package/dist/bin/gen-type/index.cjs +51 -8
  4. package/dist/cjs/bin/gen-type/addition.cjs +14 -0
  5. package/dist/cjs/bin/gen-type/bin.cjs +51 -8
  6. package/dist/cjs/bin/gen-type/index.cjs +51 -8
  7. package/dist/cjs/global/global.cjs +24 -0
  8. package/dist/cjs/global/global.d.cts +3 -1
  9. package/dist/cjs/global/ws.cjs +46 -0
  10. package/dist/cjs/global/ws.d.cts +13 -0
  11. package/dist/cjs/index.cjs +109 -32
  12. package/dist/cjs/index.d.cts +2 -1
  13. package/dist/cjs/interface/extend/json-base.cjs +24 -0
  14. package/dist/cjs/interface/extend/json-wrap.cjs +24 -0
  15. package/dist/cjs/plugin/extend/json.cjs +24 -0
  16. package/dist/cjs/plugin/extend/web-socket.cjs +111 -0
  17. package/dist/cjs/plugin/extend/web-socket.d.cts +22 -0
  18. package/dist/cjs/plugin/plug.d.cts +2 -1
  19. package/dist/cjs/result/result.cjs +24 -0
  20. package/dist/cjs/server/server.cjs +72 -32
  21. package/dist/esm/bin/gen-type/addition.js +1 -1
  22. package/dist/esm/bin/gen-type/bin.js +2 -2
  23. package/dist/esm/bin/gen-type/index.js +2 -2
  24. package/dist/esm/{chunk-7RH7Z7VC.js → chunk-3DVNMDUP.js} +38 -9
  25. package/dist/esm/chunk-56BD5FOG.js +45 -0
  26. package/dist/esm/{chunk-AHCV3LQ7.js → chunk-BC6IISWS.js} +7 -0
  27. package/dist/esm/chunk-BEJF4KW3.js +97 -0
  28. package/dist/esm/chunk-EAVNASDB.js +22 -0
  29. package/dist/esm/{chunk-7OIWSU4D.js → chunk-FGAYTB2N.js} +3 -3
  30. package/dist/esm/{chunk-OMGVOLYE.js → chunk-KRQ6KUVY.js} +14 -0
  31. package/dist/esm/{chunk-ZFC2FWJW.js → chunk-QOCDUZSU.js} +1 -1
  32. package/dist/esm/{chunk-G7ZUXXCZ.js → chunk-W7UNHY6S.js} +1 -1
  33. package/dist/esm/{chunk-IPDMEQ3O.js → chunk-XU67JT6R.js} +1 -1
  34. package/dist/esm/global/global.d.ts +3 -1
  35. package/dist/esm/global/global.js +2 -1
  36. package/dist/esm/global/ws.d.ts +13 -0
  37. package/dist/esm/global/ws.js +6 -0
  38. package/dist/esm/index.d.ts +2 -1
  39. package/dist/esm/index.js +13 -8
  40. package/dist/esm/interface/extend/json-base.js +4 -3
  41. package/dist/esm/interface/extend/json-wrap.js +4 -3
  42. package/dist/esm/plugin/extend/json.js +3 -2
  43. package/dist/esm/plugin/extend/web-socket.d.ts +22 -0
  44. package/dist/esm/plugin/extend/web-socket.js +9 -0
  45. package/dist/esm/plugin/plug.d.ts +2 -1
  46. package/dist/esm/result/result.js +3 -2
  47. package/dist/esm/server/server.js +3 -2
  48. package/package.json +3 -1
  49. package/dist/esm/chunk-K5ECRUNR.js +0 -81
@@ -34,6 +34,7 @@ __export(src_exports, {
34
34
  JSON\u72B6\u6001\u63A5\u53E3: () => JSON\u72B6\u6001\u63A5\u53E3,
35
35
  JSON\u72B6\u6001\u63A5\u53E3\u7C7B\u578B: () => JSON\u72B6\u6001\u63A5\u53E3\u7C7B\u578B,
36
36
  JSON\u89E3\u6790\u63D2\u4EF6: () => JSON\u89E3\u6790\u63D2\u4EF6,
37
+ WebSocket\u63D2\u4EF6: () => WebSocket\u63D2\u4EF6,
37
38
  \u4E1A\u52A1\u884C\u4E3A: () => \u4E1A\u52A1\u884C\u4E3A,
38
39
  \u4E2D\u6587\u8DEF\u5F84\u652F\u6301\u63D2\u4EF6: () => \u4E2D\u6587\u8DEF\u5F84\u652F\u6301\u63D2\u4EF6,
39
40
  \u63A5\u53E3: () => \u63A5\u53E3,
@@ -192,9 +193,33 @@ var \u4E1A\u52A1\u884C\u4E3A = class _\u4E1A\u52A1\u884C\u4E3A {
192
193
  // src/global/global.ts
193
194
  var import_ts_global = require("@lsby/ts-global");
194
195
  var import_ts_log = require("@lsby/ts-log");
196
+
197
+ // src/global/ws.ts
198
+ var WebSocket\u7BA1\u7406\u8005 = class {
199
+ constructor(\u8FDE\u63A5\u8868) {
200
+ this.\u8FDE\u63A5\u8868 = \u8FDE\u63A5\u8868;
201
+ }
202
+ async \u589E\u52A0\u8FDE\u63A5(\u8BF7\u6C42id, ws\u53E5\u67C4) {
203
+ this.\u8FDE\u63A5\u8868[\u8BF7\u6C42id] = ws\u53E5\u67C4;
204
+ }
205
+ async \u67E5\u8BE2\u8FDE\u63A5\u5B58\u5728(\u8BF7\u6C42id) {
206
+ return this.\u8FDE\u63A5\u8868[\u8BF7\u6C42id] == null ? false : true;
207
+ }
208
+ async \u83B7\u5F97\u53E5\u67C4(\u8BF7\u6C42id) {
209
+ return this.\u8FDE\u63A5\u8868[\u8BF7\u6C42id] || null;
210
+ }
211
+ async \u5220\u9664\u8FDE\u63A5(id) {
212
+ delete this.\u8FDE\u63A5\u8868[id];
213
+ }
214
+ };
215
+
216
+ // src/global/global.ts
195
217
  var Global = new import_ts_global.GlobalService([
196
218
  new import_ts_global.GlobalAsyncItem("log", async () => {
197
219
  return new import_ts_log.Log("@lsby:net-core");
220
+ }),
221
+ new import_ts_global.GlobalAsyncItem("WebSocket\u7BA1\u7406\u8005", async () => {
222
+ return new WebSocket\u7BA1\u7406\u8005({});
198
223
  })
199
224
  ]);
200
225
 
@@ -417,10 +442,46 @@ var \u8868\u5355\u89E3\u6790\u63D2\u4EF6 = class extends \u63D2\u4EF6 {
417
442
  }
418
443
  };
419
444
 
445
+ // src/plugin/extend/web-socket.ts
446
+ var import_zod3 = require("zod");
447
+ var WebSocket\u63D2\u4EF6 = class extends \u63D2\u4EF6 {
448
+ constructor(\u4FE1\u606F\u63CF\u8FF0) {
449
+ super(
450
+ import_zod3.z.object({
451
+ ws\u64CD\u4F5C: import_zod3.z.object({
452
+ \u53D1\u9001ws\u4FE1\u606F: import_zod3.z.function(import_zod3.z.tuple([\u4FE1\u606F\u63CF\u8FF0]), import_zod3.z.promise(import_zod3.z.void())),
453
+ \u5173\u95EDws\u8FDE\u63A5: import_zod3.z.function(import_zod3.z.tuple([]), import_zod3.z.promise(import_zod3.z.void()))
454
+ }).or(import_zod3.z.undefined())
455
+ }),
456
+ async (req, _res) => {
457
+ var wsId = req.headers["ws-client-id"];
458
+ var WebSocket\u7BA1\u7406\u80052 = await Global.getItem("WebSocket\u7BA1\u7406\u8005");
459
+ var ws\u53E5\u67C4 = null;
460
+ if (typeof wsId == "string")
461
+ ws\u53E5\u67C4 = await WebSocket\u7BA1\u7406\u80052.\u83B7\u5F97\u53E5\u67C4(wsId);
462
+ if (!ws\u53E5\u67C4)
463
+ return { ws\u64CD\u4F5C: void 0 };
464
+ var \u5B58\u5728\u7684ws\u53E5\u67C4 = ws\u53E5\u67C4;
465
+ return {
466
+ ws\u64CD\u4F5C: {
467
+ async \u53D1\u9001ws\u4FE1\u606F(\u4FE1\u606F) {
468
+ \u5B58\u5728\u7684ws\u53E5\u67C4.send(JSON.stringify(\u4FE1\u606F));
469
+ },
470
+ async \u5173\u95EDws\u8FDE\u63A5() {
471
+ \u5B58\u5728\u7684ws\u53E5\u67C4.close();
472
+ }
473
+ }
474
+ };
475
+ }
476
+ );
477
+ }
478
+ };
479
+
420
480
  // src/server/server.ts
421
481
  var import_node_os = require("os");
422
482
  var import_express3 = __toESM(require("express"), 1);
423
483
  var import_short_uuid = __toESM(require("short-uuid"), 1);
484
+ var import_ws2 = require("ws");
424
485
  var \u670D\u52A1\u5668 = class {
425
486
  constructor(\u63A5\u53E3\u4EEC, \u7AEF\u53E3, \u9759\u6001\u8D44\u6E90\u8DEF\u5F84) {
426
487
  this.\u63A5\u53E3\u4EEC = \u63A5\u53E3\u4EEC;
@@ -429,16 +490,35 @@ var \u670D\u52A1\u5668 = class {
429
490
  }
430
491
  log = Global.getItem("log");
431
492
  async run() {
432
- const app = (0, import_express3.default)();
493
+ var app = (0, import_express3.default)();
433
494
  app.use(async (req, res) => {
434
495
  var log = (await this.log).extend("\u8BF7\u6C42").extend((0, import_short_uuid.default)().new());
435
496
  try {
436
- const \u8BF7\u6C42\u8DEF\u5F84 = req.path;
437
- const \u8BF7\u6C42\u65B9\u6CD5 = req.method.toLowerCase();
497
+ var \u8BF7\u6C42\u8DEF\u5F84 = req.path;
498
+ var \u8BF7\u6C42\u65B9\u6CD5 = req.method.toLowerCase();
438
499
  await log.debug("\u6536\u5230\u8BF7\u6C42, \u8DEF\u5F84: %o, \u65B9\u6CD5: %o", \u8BF7\u6C42\u8DEF\u5F84, \u8BF7\u6C42\u65B9\u6CD5);
439
- if (this.\u9759\u6001\u8D44\u6E90\u8DEF\u5F84)
440
- this.\u9759\u6001\u8D44\u6E90\u8DEF\u5F84 = this.\u9759\u6001\u8D44\u6E90\u8DEF\u5F84.replace("./", "/");
441
- if (this.\u9759\u6001\u8D44\u6E90\u8DEF\u5F84 && req.method.toLowerCase() == "get" && \u8BF7\u6C42\u8DEF\u5F84.indexOf(this.\u9759\u6001\u8D44\u6E90\u8DEF\u5F84)) {
500
+ await log.debug("\u5C1D\u8BD5\u5339\u914D\u63A5\u53E3...");
501
+ var \u76EE\u6807\u63A5\u53E3 = this.\u63A5\u53E3\u4EEC.find((\u63A5\u53E32) => {
502
+ var \u63A5\u53E3\u7C7B\u578B3 = \u63A5\u53E32.\u83B7\u5F97\u63A5\u53E3\u7C7B\u578B();
503
+ return \u8BF7\u6C42\u8DEF\u5F84 == \u63A5\u53E3\u7C7B\u578B3.\u83B7\u5F97\u8DEF\u5F84() && \u8BF7\u6C42\u65B9\u6CD5 == \u63A5\u53E3\u7C7B\u578B3.\u83B7\u5F97\u65B9\u6CD5();
504
+ });
505
+ if (\u76EE\u6807\u63A5\u53E3 != null) {
506
+ await log.debug("\u547D\u4E2D\u63A5\u53E3");
507
+ var \u63A5\u53E3\u7C7B\u578B2 = \u76EE\u6807\u63A5\u53E3.\u83B7\u5F97\u63A5\u53E3\u7C7B\u578B();
508
+ var \u63A5\u53E3\u63D2\u4EF6 = \u63A5\u53E3\u7C7B\u578B2.\u83B7\u5F97\u63D2\u4EF6\u4EEC();
509
+ await log.debug("\u627E\u5230 %o \u4E2A \u63D2\u4EF6, \u51C6\u5907\u6267\u884C...", \u63A5\u53E3\u63D2\u4EF6.length);
510
+ var \u63D2\u4EF6\u7ED3\u679C = (await Promise.all(\u63A5\u53E3\u63D2\u4EF6.map(async (\u63D2\u4EF62) => await (await \u63D2\u4EF62.run()).\u83B7\u5F97\u5B9E\u73B0()(req, res)))).reduce((s, a) => Object.assign(s, a), {});
511
+ await log.debug("\u63D2\u4EF6 \u6267\u884C\u5B8C\u6BD5");
512
+ await log.debug("\u51C6\u5907\u6267\u884C\u63A5\u53E3\u903B\u8F91...");
513
+ var \u63A5\u53E3\u7ED3\u679C = await \u76EE\u6807\u63A5\u53E3.\u63A5\u53E3\u5B9E\u73B0(\u63D2\u4EF6\u7ED3\u679C);
514
+ await log.debug("\u63A5\u53E3\u903B\u8F91\u6267\u884C\u5B8C\u6BD5");
515
+ await log.debug("\u51C6\u5907\u6267\u884C\u8FD4\u56DE\u903B\u8F91...");
516
+ await \u63A5\u53E3\u7ED3\u679C.run(req, res);
517
+ await log.debug("\u8FD4\u56DE\u903B\u8F91\u6267\u884C\u5B8C\u6BD5");
518
+ return;
519
+ }
520
+ await log.debug("\u6CA1\u6709\u547D\u4E2D\u63A5\u53E3");
521
+ if (this.\u9759\u6001\u8D44\u6E90\u8DEF\u5F84 && req.method.toLowerCase() == "get") {
442
522
  await log.debug("\u5C1D\u8BD5\u5339\u914D\u9759\u6001\u8D44\u6E90...");
443
523
  import_express3.default.static(this.\u9759\u6001\u8D44\u6E90\u8DEF\u5F84, {
444
524
  setHeaders: async () => {
@@ -446,27 +526,6 @@ var \u670D\u52A1\u5668 = class {
446
526
  }
447
527
  })(req, res, async () => {
448
528
  await log.debug("\u6CA1\u6709\u547D\u4E2D\u9759\u6001\u8D44\u6E90");
449
- await log.debug("\u5C1D\u8BD5\u5339\u914D\u63A5\u53E3...");
450
- const \u76EE\u6807\u63A5\u53E3 = this.\u63A5\u53E3\u4EEC.find((\u63A5\u53E32) => {
451
- const \u63A5\u53E3\u7C7B\u578B2 = \u63A5\u53E32.\u83B7\u5F97\u63A5\u53E3\u7C7B\u578B();
452
- return \u8BF7\u6C42\u8DEF\u5F84 == \u63A5\u53E3\u7C7B\u578B2.\u83B7\u5F97\u8DEF\u5F84() && \u8BF7\u6C42\u65B9\u6CD5 == \u63A5\u53E3\u7C7B\u578B2.\u83B7\u5F97\u65B9\u6CD5();
453
- });
454
- if (\u76EE\u6807\u63A5\u53E3 != null) {
455
- await log.debug("\u547D\u4E2D\u63A5\u53E3");
456
- const \u63A5\u53E3\u7C7B\u578B2 = \u76EE\u6807\u63A5\u53E3.\u83B7\u5F97\u63A5\u53E3\u7C7B\u578B();
457
- const \u63A5\u53E3\u63D2\u4EF6 = \u63A5\u53E3\u7C7B\u578B2.\u83B7\u5F97\u63D2\u4EF6\u4EEC();
458
- await log.debug("\u627E\u5230 %o \u4E2A \u63D2\u4EF6, \u51C6\u5907\u6267\u884C...", \u63A5\u53E3\u63D2\u4EF6.length);
459
- const \u63D2\u4EF6\u7ED3\u679C = (await Promise.all(\u63A5\u53E3\u63D2\u4EF6.map(async (\u63D2\u4EF62) => await (await \u63D2\u4EF62.run()).\u83B7\u5F97\u5B9E\u73B0()(req, res)))).reduce((s, a) => Object.assign(s, a), {});
460
- await log.debug("\u63D2\u4EF6 \u6267\u884C\u5B8C\u6BD5");
461
- await log.debug("\u51C6\u5907\u6267\u884C\u63A5\u53E3\u903B\u8F91...");
462
- const \u63A5\u53E3\u7ED3\u679C = await \u76EE\u6807\u63A5\u53E3.\u63A5\u53E3\u5B9E\u73B0(\u63D2\u4EF6\u7ED3\u679C);
463
- await log.debug("\u63A5\u53E3\u903B\u8F91\u6267\u884C\u5B8C\u6BD5");
464
- await log.debug("\u51C6\u5907\u6267\u884C\u8FD4\u56DE\u903B\u8F91...");
465
- await \u63A5\u53E3\u7ED3\u679C.run(req, res);
466
- await log.debug("\u8FD4\u56DE\u903B\u8F91\u6267\u884C\u5B8C\u6BD5");
467
- return;
468
- }
469
- await log.debug("\u6CA1\u6709\u547D\u4E2D\u63A5\u53E3");
470
529
  await log.debug("\u6CA1\u6709\u547D\u4E2D\u4EFB\u4F55\u8D44\u6E90");
471
530
  res.status(404);
472
531
  res.end();
@@ -478,12 +537,29 @@ var \u670D\u52A1\u5668 = class {
478
537
  res.send("\u670D\u52A1\u5668\u5185\u90E8\u9519\u8BEF");
479
538
  }
480
539
  });
481
- var server = null;
482
- await new Promise((res, _rej) => {
483
- server = app.listen(this.\u7AEF\u53E3, () => res());
540
+ var server = app.listen(this.\u7AEF\u53E3);
541
+ var wss = new import_ws2.WebSocketServer({ server });
542
+ wss.on("connection", async (ws, req) => {
543
+ var log = (await this.log).extend("WebSocket").extend((0, import_short_uuid.default)().new());
544
+ await log.debug(`WebSocket \u8BF7\u6C42\u8FDE\u63A5: ${req.url}`);
545
+ var WebSocket\u7BA1\u7406\u80052 = await Global.getItem("WebSocket\u7BA1\u7406\u8005");
546
+ var \u5BA2\u6237\u7AEFid = req.url?.split("?id=")[1];
547
+ if (!\u5BA2\u6237\u7AEFid)
548
+ return ws.close(4001, "\u7F3A\u5C11\u5BA2\u6237\u7AEF ID");
549
+ if (await WebSocket\u7BA1\u7406\u80052.\u67E5\u8BE2\u8FDE\u63A5\u5B58\u5728(\u5BA2\u6237\u7AEFid) == true)
550
+ return ws.close(4002, "\u5BA2\u6237\u7AEF ID \u5DF2\u5B58\u5728");
551
+ var \u5B58\u5728\u7684\u5BA2\u6237\u7AEFid = \u5BA2\u6237\u7AEFid;
552
+ await WebSocket\u7BA1\u7406\u80052.\u589E\u52A0\u8FDE\u63A5(\u5BA2\u6237\u7AEFid, ws);
553
+ await log.debug(`WebSocket \u8FDE\u63A5\u5DF2\u5EFA\u7ACB, \u5BA2\u6237\u7AEFid: ${\u5BA2\u6237\u7AEFid}`);
554
+ ws.on("close", async () => {
555
+ await log.debug(`WebSocket \u8FDE\u63A5\u5DF2\u5173\u95ED: ${\u5BA2\u6237\u7AEFid}`);
556
+ await WebSocket\u7BA1\u7406\u80052.\u5220\u9664\u8FDE\u63A5(\u5B58\u5728\u7684\u5BA2\u6237\u7AEFid);
557
+ });
558
+ ws.on("error", async (err) => {
559
+ await log.err(`WebSocket \u51FA\u73B0\u9519\u8BEF ${\u5BA2\u6237\u7AEFid}: %o`, err);
560
+ await WebSocket\u7BA1\u7406\u80052.\u5220\u9664\u8FDE\u63A5(\u5B58\u5728\u7684\u5BA2\u6237\u7AEFid);
561
+ });
484
562
  });
485
- if (server == null)
486
- throw new Error("\u542F\u52A8\u670D\u52A1\u5668\u5931\u8D25");
487
563
  return {
488
564
  ip: Object.values((0, import_node_os.networkInterfaces)()).flat().flatMap((address) => address !== void 0 ? [address] : []).map((wrappedAddress) => wrappedAddress.address).map((address) => `http://${address}:${this.\u7AEF\u53E3}`),
489
565
  server
@@ -496,6 +572,7 @@ var \u670D\u52A1\u5668 = class {
496
572
  JSON\u72B6\u6001\u63A5\u53E3,
497
573
  JSON\u72B6\u6001\u63A5\u53E3\u7C7B\u578B,
498
574
  JSON\u89E3\u6790\u63D2\u4EF6,
575
+ WebSocket\u63D2\u4EF6,
499
576
  \u4E1A\u52A1\u884C\u4E3A,
500
577
  \u4E2D\u6587\u8DEF\u5F84\u652F\u6301\u63D2\u4EF6,
501
578
  \u63A5\u53E3,
@@ -8,7 +8,8 @@ export { 中文路径支持插件 } from './plugin/extend/chinese-path.cjs';
8
8
  export { 自定义数据插件 } from './plugin/extend/custom-data.cjs';
9
9
  export { JSON解析插件, 从接口类型获得JSON参数, 任意JSON解析插件, 任意JSON解析插件项, 合并JSON插件结果 } from './plugin/extend/json.cjs';
10
10
  export { 表单解析插件 } from './plugin/extend/urlencoded.cjs';
11
- export { 任意插件, 包装插件项,Task插件内部类型, 取插件内部ts类型, 合并插件结果, 插件, 插件项类型 } from './plugin/plug.cjs';
11
+ export { WebSocket插件, 任意WS插件, 任意WS插件项, WS插件泛型, 取第一个WS插件结果 } from './plugin/extend/web-socket.cjs';
12
+ export { 任意插件, 包装插件项, 取Task插件内部类型, 取Task插件类型, 取插件内部ts类型, 合并插件结果, 插件, 插件项类型 } from './plugin/plug.cjs';
12
13
  export { 正确JSON结果, 正确结果, 正确自定义结果, 结果, 错误JSON结果, 错误结果 } from './result/result.cjs';
13
14
  export { 服务器 } from './server/server.cjs';
14
15
  import '@lsby/ts-fp-data';
@@ -27,9 +27,33 @@ module.exports = __toCommonJS(json_base_exports);
27
27
  // src/global/global.ts
28
28
  var import_ts_global = require("@lsby/ts-global");
29
29
  var import_ts_log = require("@lsby/ts-log");
30
+
31
+ // src/global/ws.ts
32
+ var WebSocket\u7BA1\u7406\u8005 = class {
33
+ constructor(\u8FDE\u63A5\u8868) {
34
+ this.\u8FDE\u63A5\u8868 = \u8FDE\u63A5\u8868;
35
+ }
36
+ async \u589E\u52A0\u8FDE\u63A5(\u8BF7\u6C42id, ws\u53E5\u67C4) {
37
+ this.\u8FDE\u63A5\u8868[\u8BF7\u6C42id] = ws\u53E5\u67C4;
38
+ }
39
+ async \u67E5\u8BE2\u8FDE\u63A5\u5B58\u5728(\u8BF7\u6C42id) {
40
+ return this.\u8FDE\u63A5\u8868[\u8BF7\u6C42id] == null ? false : true;
41
+ }
42
+ async \u83B7\u5F97\u53E5\u67C4(\u8BF7\u6C42id) {
43
+ return this.\u8FDE\u63A5\u8868[\u8BF7\u6C42id] || null;
44
+ }
45
+ async \u5220\u9664\u8FDE\u63A5(id) {
46
+ delete this.\u8FDE\u63A5\u8868[id];
47
+ }
48
+ };
49
+
50
+ // src/global/global.ts
30
51
  var Global = new import_ts_global.GlobalService([
31
52
  new import_ts_global.GlobalAsyncItem("log", async () => {
32
53
  return new import_ts_log.Log("@lsby:net-core");
54
+ }),
55
+ new import_ts_global.GlobalAsyncItem("WebSocket\u7BA1\u7406\u8005", async () => {
56
+ return new WebSocket\u7BA1\u7406\u8005({});
33
57
  })
34
58
  ]);
35
59
 
@@ -29,9 +29,33 @@ var import_zod = require("zod");
29
29
  // src/global/global.ts
30
30
  var import_ts_global = require("@lsby/ts-global");
31
31
  var import_ts_log = require("@lsby/ts-log");
32
+
33
+ // src/global/ws.ts
34
+ var WebSocket\u7BA1\u7406\u8005 = class {
35
+ constructor(\u8FDE\u63A5\u8868) {
36
+ this.\u8FDE\u63A5\u8868 = \u8FDE\u63A5\u8868;
37
+ }
38
+ async \u589E\u52A0\u8FDE\u63A5(\u8BF7\u6C42id, ws\u53E5\u67C4) {
39
+ this.\u8FDE\u63A5\u8868[\u8BF7\u6C42id] = ws\u53E5\u67C4;
40
+ }
41
+ async \u67E5\u8BE2\u8FDE\u63A5\u5B58\u5728(\u8BF7\u6C42id) {
42
+ return this.\u8FDE\u63A5\u8868[\u8BF7\u6C42id] == null ? false : true;
43
+ }
44
+ async \u83B7\u5F97\u53E5\u67C4(\u8BF7\u6C42id) {
45
+ return this.\u8FDE\u63A5\u8868[\u8BF7\u6C42id] || null;
46
+ }
47
+ async \u5220\u9664\u8FDE\u63A5(id) {
48
+ delete this.\u8FDE\u63A5\u8868[id];
49
+ }
50
+ };
51
+
52
+ // src/global/global.ts
32
53
  var Global = new import_ts_global.GlobalService([
33
54
  new import_ts_global.GlobalAsyncItem("log", async () => {
34
55
  return new import_ts_log.Log("@lsby:net-core");
56
+ }),
57
+ new import_ts_global.GlobalAsyncItem("WebSocket\u7BA1\u7406\u8005", async () => {
58
+ return new WebSocket\u7BA1\u7406\u8005({});
35
59
  })
36
60
  ]);
37
61
 
@@ -39,9 +39,33 @@ var import_express = __toESM(require("express"), 1);
39
39
  // src/global/global.ts
40
40
  var import_ts_global = require("@lsby/ts-global");
41
41
  var import_ts_log = require("@lsby/ts-log");
42
+
43
+ // src/global/ws.ts
44
+ var WebSocket\u7BA1\u7406\u8005 = class {
45
+ constructor(\u8FDE\u63A5\u8868) {
46
+ this.\u8FDE\u63A5\u8868 = \u8FDE\u63A5\u8868;
47
+ }
48
+ async \u589E\u52A0\u8FDE\u63A5(\u8BF7\u6C42id, ws\u53E5\u67C4) {
49
+ this.\u8FDE\u63A5\u8868[\u8BF7\u6C42id] = ws\u53E5\u67C4;
50
+ }
51
+ async \u67E5\u8BE2\u8FDE\u63A5\u5B58\u5728(\u8BF7\u6C42id) {
52
+ return this.\u8FDE\u63A5\u8868[\u8BF7\u6C42id] == null ? false : true;
53
+ }
54
+ async \u83B7\u5F97\u53E5\u67C4(\u8BF7\u6C42id) {
55
+ return this.\u8FDE\u63A5\u8868[\u8BF7\u6C42id] || null;
56
+ }
57
+ async \u5220\u9664\u8FDE\u63A5(id) {
58
+ delete this.\u8FDE\u63A5\u8868[id];
59
+ }
60
+ };
61
+
62
+ // src/global/global.ts
42
63
  var Global = new import_ts_global.GlobalService([
43
64
  new import_ts_global.GlobalAsyncItem("log", async () => {
44
65
  return new import_ts_log.Log("@lsby:net-core");
66
+ }),
67
+ new import_ts_global.GlobalAsyncItem("WebSocket\u7BA1\u7406\u8005", async () => {
68
+ return new WebSocket\u7BA1\u7406\u8005({});
45
69
  })
46
70
  ]);
47
71
 
@@ -0,0 +1,111 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+
20
+ // src/plugin/extend/web-socket.ts
21
+ var web_socket_exports = {};
22
+ __export(web_socket_exports, {
23
+ WebSocket\u63D2\u4EF6: () => WebSocket\u63D2\u4EF6
24
+ });
25
+ module.exports = __toCommonJS(web_socket_exports);
26
+ var import_zod = require("zod");
27
+
28
+ // src/global/global.ts
29
+ var import_ts_global = require("@lsby/ts-global");
30
+ var import_ts_log = require("@lsby/ts-log");
31
+
32
+ // src/global/ws.ts
33
+ var WebSocket\u7BA1\u7406\u8005 = class {
34
+ constructor(\u8FDE\u63A5\u8868) {
35
+ this.\u8FDE\u63A5\u8868 = \u8FDE\u63A5\u8868;
36
+ }
37
+ async \u589E\u52A0\u8FDE\u63A5(\u8BF7\u6C42id, ws\u53E5\u67C4) {
38
+ this.\u8FDE\u63A5\u8868[\u8BF7\u6C42id] = ws\u53E5\u67C4;
39
+ }
40
+ async \u67E5\u8BE2\u8FDE\u63A5\u5B58\u5728(\u8BF7\u6C42id) {
41
+ return this.\u8FDE\u63A5\u8868[\u8BF7\u6C42id] == null ? false : true;
42
+ }
43
+ async \u83B7\u5F97\u53E5\u67C4(\u8BF7\u6C42id) {
44
+ return this.\u8FDE\u63A5\u8868[\u8BF7\u6C42id] || null;
45
+ }
46
+ async \u5220\u9664\u8FDE\u63A5(id) {
47
+ delete this.\u8FDE\u63A5\u8868[id];
48
+ }
49
+ };
50
+
51
+ // src/global/global.ts
52
+ var Global = new import_ts_global.GlobalService([
53
+ new import_ts_global.GlobalAsyncItem("log", async () => {
54
+ return new import_ts_log.Log("@lsby:net-core");
55
+ }),
56
+ new import_ts_global.GlobalAsyncItem("WebSocket\u7BA1\u7406\u8005", async () => {
57
+ return new WebSocket\u7BA1\u7406\u8005({});
58
+ })
59
+ ]);
60
+
61
+ // src/plugin/plug.ts
62
+ var \u63D2\u4EF6 = class {
63
+ constructor(\u7C7B\u578B, \u5B9E\u73B0) {
64
+ this.\u7C7B\u578B = \u7C7B\u578B;
65
+ this.\u5B9E\u73B0 = \u5B9E\u73B0;
66
+ }
67
+ \u83B7\u5F97\u7C7B\u578B() {
68
+ return this.\u7C7B\u578B;
69
+ }
70
+ \u83B7\u5F97\u5B9E\u73B0() {
71
+ return this.\u5B9E\u73B0;
72
+ }
73
+ };
74
+
75
+ // src/plugin/extend/web-socket.ts
76
+ var WebSocket\u63D2\u4EF6 = class extends \u63D2\u4EF6 {
77
+ constructor(\u4FE1\u606F\u63CF\u8FF0) {
78
+ super(
79
+ import_zod.z.object({
80
+ ws\u64CD\u4F5C: import_zod.z.object({
81
+ \u53D1\u9001ws\u4FE1\u606F: import_zod.z.function(import_zod.z.tuple([\u4FE1\u606F\u63CF\u8FF0]), import_zod.z.promise(import_zod.z.void())),
82
+ \u5173\u95EDws\u8FDE\u63A5: import_zod.z.function(import_zod.z.tuple([]), import_zod.z.promise(import_zod.z.void()))
83
+ }).or(import_zod.z.undefined())
84
+ }),
85
+ async (req, _res) => {
86
+ var wsId = req.headers["ws-client-id"];
87
+ var WebSocket\u7BA1\u7406\u80052 = await Global.getItem("WebSocket\u7BA1\u7406\u8005");
88
+ var ws\u53E5\u67C4 = null;
89
+ if (typeof wsId == "string")
90
+ ws\u53E5\u67C4 = await WebSocket\u7BA1\u7406\u80052.\u83B7\u5F97\u53E5\u67C4(wsId);
91
+ if (!ws\u53E5\u67C4)
92
+ return { ws\u64CD\u4F5C: void 0 };
93
+ var \u5B58\u5728\u7684ws\u53E5\u67C4 = ws\u53E5\u67C4;
94
+ return {
95
+ ws\u64CD\u4F5C: {
96
+ async \u53D1\u9001ws\u4FE1\u606F(\u4FE1\u606F) {
97
+ \u5B58\u5728\u7684ws\u53E5\u67C4.send(JSON.stringify(\u4FE1\u606F));
98
+ },
99
+ async \u5173\u95EDws\u8FDE\u63A5() {
100
+ \u5B58\u5728\u7684ws\u53E5\u67C4.close();
101
+ }
102
+ }
103
+ };
104
+ }
105
+ );
106
+ }
107
+ };
108
+ // Annotate the CommonJS export names for ESM import in node:
109
+ 0 && (module.exports = {
110
+ WebSocket\u63D2\u4EF6
111
+ });
@@ -0,0 +1,22 @@
1
+ import { z } from 'zod';
2
+ import { 插件 as __, 包装插件项 as _____, 插件项类型 as _____$1, 取Task插件类型 as _Task____ } from '../plug.cjs';
3
+ import 'express';
4
+ import '@lsby/ts-fp-data';
5
+
6
+ declare class WebSocket插件<信息 extends z.AnyZodObject> extends __<z.ZodObject<{
7
+ ws操作: z.ZodUnion<[
8
+ z.ZodObject<{
9
+ 发送ws信息: z.ZodFunction<z.ZodTuple<[信息], null>, z.ZodPromise<z.ZodVoid>>;
10
+ 关闭ws连接: z.ZodFunction<z.ZodTuple<[], null>, z.ZodPromise<z.ZodVoid>>;
11
+ }>,
12
+ z.ZodUndefined
13
+ ]>;
14
+ }>> {
15
+ constructor(信息描述: 信息);
16
+ }
17
+ type 任意WS插件 = WebSocket插件<any>;
18
+ type 任意WS插件项 = _____<任意WS插件>;
19
+ type 取WS插件泛型<A> = A extends WebSocket插件<infer x> ? x : never;
20
+ type 取第一个WS插件结果<Arr extends Array<_____$1>> = Arr extends [] ? {} : Arr extends [infer x, ...infer xs] ? x extends infer 插件项 ? xs extends Array<_____$1> ? 插件项 extends 任意WS插件项 ? z.infer<取WS插件泛型<_Task____<插件项>>> : 取第一个WS插件结果<xs> : {} : {} : {};
21
+
22
+ export { WebSocket插件, type 任意WS插件, type 任意WS插件项, type 取WS插件泛型, type 取第一个WS插件结果 };
@@ -14,7 +14,8 @@ type 任意插件 = 插件<any>;
14
14
  type 包装插件项<A> = Task<A>;
15
15
  type 插件项类型 = 包装插件项<插件<z.AnyZodObject>>;
16
16
  type 取Task插件内部类型<A> = A extends Task<插件<infer x>> ? x : never;
17
+ type 取Task插件类型<A> = A extends Task<infer x> ? x : never;
17
18
  type 取插件内部ts类型<A> = A extends 插件<infer x> ? z.infer<x> : never;
18
19
  type 合并插件结果<Arr extends Array<插件项类型>> = Arr extends [] ? {} : Arr extends [infer x, ...infer xs] ? x extends infer 插件项 ? xs extends Array<插件项类型> ? z.infer<取Task插件内部类型<插件项>> & 合并插件结果<xs> : {} : {} : {};
19
20
 
20
- export { type 任意插件, type 包装插件项, type 取Task插件内部类型, type 取插件内部ts类型, type 合并插件结果, 插件, type 插件项类型 };
21
+ export { type 任意插件, type 包装插件项, type 取Task插件内部类型, type 取Task插件类型, type 取插件内部ts类型, type 合并插件结果, 插件, type 插件项类型 };
@@ -32,9 +32,33 @@ module.exports = __toCommonJS(result_exports);
32
32
  // src/global/global.ts
33
33
  var import_ts_global = require("@lsby/ts-global");
34
34
  var import_ts_log = require("@lsby/ts-log");
35
+
36
+ // src/global/ws.ts
37
+ var WebSocket\u7BA1\u7406\u8005 = class {
38
+ constructor(\u8FDE\u63A5\u8868) {
39
+ this.\u8FDE\u63A5\u8868 = \u8FDE\u63A5\u8868;
40
+ }
41
+ async \u589E\u52A0\u8FDE\u63A5(\u8BF7\u6C42id, ws\u53E5\u67C4) {
42
+ this.\u8FDE\u63A5\u8868[\u8BF7\u6C42id] = ws\u53E5\u67C4;
43
+ }
44
+ async \u67E5\u8BE2\u8FDE\u63A5\u5B58\u5728(\u8BF7\u6C42id) {
45
+ return this.\u8FDE\u63A5\u8868[\u8BF7\u6C42id] == null ? false : true;
46
+ }
47
+ async \u83B7\u5F97\u53E5\u67C4(\u8BF7\u6C42id) {
48
+ return this.\u8FDE\u63A5\u8868[\u8BF7\u6C42id] || null;
49
+ }
50
+ async \u5220\u9664\u8FDE\u63A5(id) {
51
+ delete this.\u8FDE\u63A5\u8868[id];
52
+ }
53
+ };
54
+
55
+ // src/global/global.ts
35
56
  var Global = new import_ts_global.GlobalService([
36
57
  new import_ts_global.GlobalAsyncItem("log", async () => {
37
58
  return new import_ts_log.Log("@lsby:net-core");
59
+ }),
60
+ new import_ts_global.GlobalAsyncItem("WebSocket\u7BA1\u7406\u8005", async () => {
61
+ return new WebSocket\u7BA1\u7406\u8005({});
38
62
  })
39
63
  ]);
40
64
 
@@ -36,13 +36,38 @@ module.exports = __toCommonJS(server_exports);
36
36
  var import_node_os = require("os");
37
37
  var import_express = __toESM(require("express"), 1);
38
38
  var import_short_uuid = __toESM(require("short-uuid"), 1);
39
+ var import_ws2 = require("ws");
39
40
 
40
41
  // src/global/global.ts
41
42
  var import_ts_global = require("@lsby/ts-global");
42
43
  var import_ts_log = require("@lsby/ts-log");
44
+
45
+ // src/global/ws.ts
46
+ var WebSocket\u7BA1\u7406\u8005 = class {
47
+ constructor(\u8FDE\u63A5\u8868) {
48
+ this.\u8FDE\u63A5\u8868 = \u8FDE\u63A5\u8868;
49
+ }
50
+ async \u589E\u52A0\u8FDE\u63A5(\u8BF7\u6C42id, ws\u53E5\u67C4) {
51
+ this.\u8FDE\u63A5\u8868[\u8BF7\u6C42id] = ws\u53E5\u67C4;
52
+ }
53
+ async \u67E5\u8BE2\u8FDE\u63A5\u5B58\u5728(\u8BF7\u6C42id) {
54
+ return this.\u8FDE\u63A5\u8868[\u8BF7\u6C42id] == null ? false : true;
55
+ }
56
+ async \u83B7\u5F97\u53E5\u67C4(\u8BF7\u6C42id) {
57
+ return this.\u8FDE\u63A5\u8868[\u8BF7\u6C42id] || null;
58
+ }
59
+ async \u5220\u9664\u8FDE\u63A5(id) {
60
+ delete this.\u8FDE\u63A5\u8868[id];
61
+ }
62
+ };
63
+
64
+ // src/global/global.ts
43
65
  var Global = new import_ts_global.GlobalService([
44
66
  new import_ts_global.GlobalAsyncItem("log", async () => {
45
67
  return new import_ts_log.Log("@lsby:net-core");
68
+ }),
69
+ new import_ts_global.GlobalAsyncItem("WebSocket\u7BA1\u7406\u8005", async () => {
70
+ return new WebSocket\u7BA1\u7406\u8005({});
46
71
  })
47
72
  ]);
48
73
 
@@ -55,16 +80,35 @@ var \u670D\u52A1\u5668 = class {
55
80
  }
56
81
  log = Global.getItem("log");
57
82
  async run() {
58
- const app = (0, import_express.default)();
83
+ var app = (0, import_express.default)();
59
84
  app.use(async (req, res) => {
60
85
  var log = (await this.log).extend("\u8BF7\u6C42").extend((0, import_short_uuid.default)().new());
61
86
  try {
62
- const \u8BF7\u6C42\u8DEF\u5F84 = req.path;
63
- const \u8BF7\u6C42\u65B9\u6CD5 = req.method.toLowerCase();
87
+ var \u8BF7\u6C42\u8DEF\u5F84 = req.path;
88
+ var \u8BF7\u6C42\u65B9\u6CD5 = req.method.toLowerCase();
64
89
  await log.debug("\u6536\u5230\u8BF7\u6C42, \u8DEF\u5F84: %o, \u65B9\u6CD5: %o", \u8BF7\u6C42\u8DEF\u5F84, \u8BF7\u6C42\u65B9\u6CD5);
65
- if (this.\u9759\u6001\u8D44\u6E90\u8DEF\u5F84)
66
- this.\u9759\u6001\u8D44\u6E90\u8DEF\u5F84 = this.\u9759\u6001\u8D44\u6E90\u8DEF\u5F84.replace("./", "/");
67
- if (this.\u9759\u6001\u8D44\u6E90\u8DEF\u5F84 && req.method.toLowerCase() == "get" && \u8BF7\u6C42\u8DEF\u5F84.indexOf(this.\u9759\u6001\u8D44\u6E90\u8DEF\u5F84)) {
90
+ await log.debug("\u5C1D\u8BD5\u5339\u914D\u63A5\u53E3...");
91
+ var \u76EE\u6807\u63A5\u53E3 = this.\u63A5\u53E3\u4EEC.find((\u63A5\u53E3) => {
92
+ var \u63A5\u53E3\u7C7B\u578B2 = \u63A5\u53E3.\u83B7\u5F97\u63A5\u53E3\u7C7B\u578B();
93
+ return \u8BF7\u6C42\u8DEF\u5F84 == \u63A5\u53E3\u7C7B\u578B2.\u83B7\u5F97\u8DEF\u5F84() && \u8BF7\u6C42\u65B9\u6CD5 == \u63A5\u53E3\u7C7B\u578B2.\u83B7\u5F97\u65B9\u6CD5();
94
+ });
95
+ if (\u76EE\u6807\u63A5\u53E3 != null) {
96
+ await log.debug("\u547D\u4E2D\u63A5\u53E3");
97
+ var \u63A5\u53E3\u7C7B\u578B = \u76EE\u6807\u63A5\u53E3.\u83B7\u5F97\u63A5\u53E3\u7C7B\u578B();
98
+ var \u63A5\u53E3\u63D2\u4EF6 = \u63A5\u53E3\u7C7B\u578B.\u83B7\u5F97\u63D2\u4EF6\u4EEC();
99
+ await log.debug("\u627E\u5230 %o \u4E2A \u63D2\u4EF6, \u51C6\u5907\u6267\u884C...", \u63A5\u53E3\u63D2\u4EF6.length);
100
+ var \u63D2\u4EF6\u7ED3\u679C = (await Promise.all(\u63A5\u53E3\u63D2\u4EF6.map(async (\u63D2\u4EF6) => await (await \u63D2\u4EF6.run()).\u83B7\u5F97\u5B9E\u73B0()(req, res)))).reduce((s, a) => Object.assign(s, a), {});
101
+ await log.debug("\u63D2\u4EF6 \u6267\u884C\u5B8C\u6BD5");
102
+ await log.debug("\u51C6\u5907\u6267\u884C\u63A5\u53E3\u903B\u8F91...");
103
+ var \u63A5\u53E3\u7ED3\u679C = await \u76EE\u6807\u63A5\u53E3.\u63A5\u53E3\u5B9E\u73B0(\u63D2\u4EF6\u7ED3\u679C);
104
+ await log.debug("\u63A5\u53E3\u903B\u8F91\u6267\u884C\u5B8C\u6BD5");
105
+ await log.debug("\u51C6\u5907\u6267\u884C\u8FD4\u56DE\u903B\u8F91...");
106
+ await \u63A5\u53E3\u7ED3\u679C.run(req, res);
107
+ await log.debug("\u8FD4\u56DE\u903B\u8F91\u6267\u884C\u5B8C\u6BD5");
108
+ return;
109
+ }
110
+ await log.debug("\u6CA1\u6709\u547D\u4E2D\u63A5\u53E3");
111
+ if (this.\u9759\u6001\u8D44\u6E90\u8DEF\u5F84 && req.method.toLowerCase() == "get") {
68
112
  await log.debug("\u5C1D\u8BD5\u5339\u914D\u9759\u6001\u8D44\u6E90...");
69
113
  import_express.default.static(this.\u9759\u6001\u8D44\u6E90\u8DEF\u5F84, {
70
114
  setHeaders: async () => {
@@ -72,27 +116,6 @@ var \u670D\u52A1\u5668 = class {
72
116
  }
73
117
  })(req, res, async () => {
74
118
  await log.debug("\u6CA1\u6709\u547D\u4E2D\u9759\u6001\u8D44\u6E90");
75
- await log.debug("\u5C1D\u8BD5\u5339\u914D\u63A5\u53E3...");
76
- const \u76EE\u6807\u63A5\u53E3 = this.\u63A5\u53E3\u4EEC.find((\u63A5\u53E3) => {
77
- const \u63A5\u53E3\u7C7B\u578B = \u63A5\u53E3.\u83B7\u5F97\u63A5\u53E3\u7C7B\u578B();
78
- return \u8BF7\u6C42\u8DEF\u5F84 == \u63A5\u53E3\u7C7B\u578B.\u83B7\u5F97\u8DEF\u5F84() && \u8BF7\u6C42\u65B9\u6CD5 == \u63A5\u53E3\u7C7B\u578B.\u83B7\u5F97\u65B9\u6CD5();
79
- });
80
- if (\u76EE\u6807\u63A5\u53E3 != null) {
81
- await log.debug("\u547D\u4E2D\u63A5\u53E3");
82
- const \u63A5\u53E3\u7C7B\u578B = \u76EE\u6807\u63A5\u53E3.\u83B7\u5F97\u63A5\u53E3\u7C7B\u578B();
83
- const \u63A5\u53E3\u63D2\u4EF6 = \u63A5\u53E3\u7C7B\u578B.\u83B7\u5F97\u63D2\u4EF6\u4EEC();
84
- await log.debug("\u627E\u5230 %o \u4E2A \u63D2\u4EF6, \u51C6\u5907\u6267\u884C...", \u63A5\u53E3\u63D2\u4EF6.length);
85
- const \u63D2\u4EF6\u7ED3\u679C = (await Promise.all(\u63A5\u53E3\u63D2\u4EF6.map(async (\u63D2\u4EF6) => await (await \u63D2\u4EF6.run()).\u83B7\u5F97\u5B9E\u73B0()(req, res)))).reduce((s, a) => Object.assign(s, a), {});
86
- await log.debug("\u63D2\u4EF6 \u6267\u884C\u5B8C\u6BD5");
87
- await log.debug("\u51C6\u5907\u6267\u884C\u63A5\u53E3\u903B\u8F91...");
88
- const \u63A5\u53E3\u7ED3\u679C = await \u76EE\u6807\u63A5\u53E3.\u63A5\u53E3\u5B9E\u73B0(\u63D2\u4EF6\u7ED3\u679C);
89
- await log.debug("\u63A5\u53E3\u903B\u8F91\u6267\u884C\u5B8C\u6BD5");
90
- await log.debug("\u51C6\u5907\u6267\u884C\u8FD4\u56DE\u903B\u8F91...");
91
- await \u63A5\u53E3\u7ED3\u679C.run(req, res);
92
- await log.debug("\u8FD4\u56DE\u903B\u8F91\u6267\u884C\u5B8C\u6BD5");
93
- return;
94
- }
95
- await log.debug("\u6CA1\u6709\u547D\u4E2D\u63A5\u53E3");
96
119
  await log.debug("\u6CA1\u6709\u547D\u4E2D\u4EFB\u4F55\u8D44\u6E90");
97
120
  res.status(404);
98
121
  res.end();
@@ -104,12 +127,29 @@ var \u670D\u52A1\u5668 = class {
104
127
  res.send("\u670D\u52A1\u5668\u5185\u90E8\u9519\u8BEF");
105
128
  }
106
129
  });
107
- var server = null;
108
- await new Promise((res, _rej) => {
109
- server = app.listen(this.\u7AEF\u53E3, () => res());
130
+ var server = app.listen(this.\u7AEF\u53E3);
131
+ var wss = new import_ws2.WebSocketServer({ server });
132
+ wss.on("connection", async (ws, req) => {
133
+ var log = (await this.log).extend("WebSocket").extend((0, import_short_uuid.default)().new());
134
+ await log.debug(`WebSocket \u8BF7\u6C42\u8FDE\u63A5: ${req.url}`);
135
+ var WebSocket\u7BA1\u7406\u80052 = await Global.getItem("WebSocket\u7BA1\u7406\u8005");
136
+ var \u5BA2\u6237\u7AEFid = req.url?.split("?id=")[1];
137
+ if (!\u5BA2\u6237\u7AEFid)
138
+ return ws.close(4001, "\u7F3A\u5C11\u5BA2\u6237\u7AEF ID");
139
+ if (await WebSocket\u7BA1\u7406\u80052.\u67E5\u8BE2\u8FDE\u63A5\u5B58\u5728(\u5BA2\u6237\u7AEFid) == true)
140
+ return ws.close(4002, "\u5BA2\u6237\u7AEF ID \u5DF2\u5B58\u5728");
141
+ var \u5B58\u5728\u7684\u5BA2\u6237\u7AEFid = \u5BA2\u6237\u7AEFid;
142
+ await WebSocket\u7BA1\u7406\u80052.\u589E\u52A0\u8FDE\u63A5(\u5BA2\u6237\u7AEFid, ws);
143
+ await log.debug(`WebSocket \u8FDE\u63A5\u5DF2\u5EFA\u7ACB, \u5BA2\u6237\u7AEFid: ${\u5BA2\u6237\u7AEFid}`);
144
+ ws.on("close", async () => {
145
+ await log.debug(`WebSocket \u8FDE\u63A5\u5DF2\u5173\u95ED: ${\u5BA2\u6237\u7AEFid}`);
146
+ await WebSocket\u7BA1\u7406\u80052.\u5220\u9664\u8FDE\u63A5(\u5B58\u5728\u7684\u5BA2\u6237\u7AEFid);
147
+ });
148
+ ws.on("error", async (err) => {
149
+ await log.err(`WebSocket \u51FA\u73B0\u9519\u8BEF ${\u5BA2\u6237\u7AEFid}: %o`, err);
150
+ await WebSocket\u7BA1\u7406\u80052.\u5220\u9664\u8FDE\u63A5(\u5B58\u5728\u7684\u5BA2\u6237\u7AEFid);
151
+ });
110
152
  });
111
- if (server == null)
112
- throw new Error("\u542F\u52A8\u670D\u52A1\u5668\u5931\u8D25");
113
153
  return {
114
154
  ip: Object.values((0, import_node_os.networkInterfaces)()).flat().flatMap((address) => address !== void 0 ? [address] : []).map((wrappedAddress) => wrappedAddress.address).map((address) => `http://${address}:${this.\u7AEF\u53E3}`),
115
155
  server
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  附加代码
3
- } from "../../chunk-OMGVOLYE.js";
3
+ } from "../../chunk-KRQ6KUVY.js";
4
4
  export {
5
5
  \u9644\u52A0\u4EE3\u7801
6
6
  };