@lsby/net-core 0.3.36 → 0.3.38

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 (53) 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 +121 -19
  12. package/dist/cjs/index.d.cts +2 -1
  13. package/dist/cjs/interface/extend/json-base.cjs +49 -2
  14. package/dist/cjs/interface/extend/json-wrap.cjs +49 -2
  15. package/dist/cjs/plugin/extend/json.cjs +49 -2
  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 +49 -2
  20. package/dist/cjs/server/server.cjs +57 -15
  21. package/dist/cjs/tools/tools.cjs +52 -0
  22. package/dist/cjs/tools/tools.d.cts +4 -0
  23. package/dist/esm/bin/gen-type/addition.js +1 -1
  24. package/dist/esm/bin/gen-type/bin.js +2 -2
  25. package/dist/esm/bin/gen-type/index.js +2 -2
  26. package/dist/esm/{chunk-7RH7Z7VC.js → chunk-3DVNMDUP.js} +38 -9
  27. package/dist/esm/{chunk-AMBUPXY3.js → chunk-54IJ3ZGJ.js} +8 -5
  28. package/dist/esm/chunk-AUPZZGG7.js +45 -0
  29. package/dist/esm/{chunk-AHCV3LQ7.js → chunk-BC6IISWS.js} +7 -0
  30. package/dist/esm/{chunk-XM66T73O.js → chunk-BEJF4KW3.js} +34 -16
  31. package/dist/esm/chunk-EAVNASDB.js +22 -0
  32. package/dist/esm/chunk-ES4NZ4EM.js +27 -0
  33. package/dist/esm/{chunk-PVTF4VYK.js → chunk-HOFWZLG5.js} +1 -1
  34. package/dist/esm/{chunk-B55VVACL.js → chunk-KNZTLDS7.js} +1 -1
  35. package/dist/esm/{chunk-OMGVOLYE.js → chunk-KRQ6KUVY.js} +14 -0
  36. package/dist/esm/{chunk-IPDMEQ3O.js → chunk-PKE7OYIU.js} +6 -3
  37. package/dist/esm/global/global.d.ts +3 -1
  38. package/dist/esm/global/global.js +2 -1
  39. package/dist/esm/global/ws.d.ts +13 -0
  40. package/dist/esm/global/ws.js +6 -0
  41. package/dist/esm/index.d.ts +2 -1
  42. package/dist/esm/index.js +15 -9
  43. package/dist/esm/interface/extend/json-base.js +5 -3
  44. package/dist/esm/interface/extend/json-wrap.js +5 -3
  45. package/dist/esm/plugin/extend/json.js +4 -2
  46. package/dist/esm/plugin/extend/web-socket.d.ts +22 -0
  47. package/dist/esm/plugin/extend/web-socket.js +9 -0
  48. package/dist/esm/plugin/plug.d.ts +2 -1
  49. package/dist/esm/result/result.js +4 -2
  50. package/dist/esm/server/server.js +3 -2
  51. package/dist/esm/tools/tools.d.ts +4 -0
  52. package/dist/esm/tools/tools.js +8 -0
  53. package/package.json +3 -1
@@ -32,12 +32,59 @@ 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
 
65
+ // src/tools/tools.ts
66
+ function \u622A\u65AD\u5B57\u7B26\u4E32(\u5185\u5BB9) {
67
+ var \u6700\u5927\u65E5\u5FD7\u957F\u5EA6 = 1e3;
68
+ if (\u5185\u5BB9.length > \u6700\u5927\u65E5\u5FD7\u957F\u5EA6)
69
+ return \u5185\u5BB9.slice(0, \u6700\u5927\u65E5\u5FD7\u957F\u5EA6) + "...";
70
+ return \u5185\u5BB9;
71
+ }
72
+ function \u9012\u5F52\u622A\u65AD\u5B57\u7B26\u4E32(\u6570\u636E) {
73
+ if (typeof \u6570\u636E === "string")
74
+ return \u622A\u65AD\u5B57\u7B26\u4E32(\u6570\u636E);
75
+ if (Array.isArray(\u6570\u636E))
76
+ return \u6570\u636E.map((\u9879) => \u9012\u5F52\u622A\u65AD\u5B57\u7B26\u4E32(\u9879));
77
+ if (typeof \u6570\u636E === "object" && \u6570\u636E !== null) {
78
+ const \u65B0\u6570\u636E = {};
79
+ for (const key in \u6570\u636E) {
80
+ if (\u6570\u636E.hasOwnProperty(key))
81
+ \u65B0\u6570\u636E[key] = \u9012\u5F52\u622A\u65AD\u5B57\u7B26\u4E32(\u6570\u636E[key]);
82
+ }
83
+ return \u65B0\u6570\u636E;
84
+ }
85
+ return \u6570\u636E;
86
+ }
87
+
41
88
  // src/result/result.ts
42
89
  var \u7ED3\u679C = class {
43
90
  };
@@ -52,7 +99,7 @@ var \u6B63\u786EJSON\u7ED3\u679C = class extends \u6B63\u786E\u7ED3\u679C {
52
99
  log = Global.getItem("log");
53
100
  async run(req, res) {
54
101
  var log = (await this.log).extend("\u6B63\u786EJSON\u7ED3\u679C");
55
- await log.debug("\u8FD4\u56DE\u6570\u636E: %o", this.data);
102
+ await log.debug("\u8FD4\u56DE\u6570\u636E: %o", \u9012\u5F52\u622A\u65AD\u5B57\u7B26\u4E32(this.data));
56
103
  res.send(this.data);
57
104
  }
58
105
  };
@@ -76,7 +123,7 @@ var \u9519\u8BEFJSON\u7ED3\u679C = class extends \u9519\u8BEF\u7ED3\u679C {
76
123
  log = Global.getItem("log");
77
124
  async run(req, res) {
78
125
  var log = (await this.log).extend("\u9519\u8BEFJSON\u7ED3\u679C");
79
- await log.debug("\u8FD4\u56DE\u6570\u636E: %o", this.data);
126
+ await log.debug("\u8FD4\u56DE\u6570\u636E: %o", \u9012\u5F52\u622A\u65AD\u5B57\u7B26\u4E32(this.data));
80
127
  res.send(this.data);
81
128
  }
82
129
  };
@@ -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,27 +80,27 @@ 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
90
  await log.debug("\u5C1D\u8BD5\u5339\u914D\u63A5\u53E3...");
66
- const \u76EE\u6807\u63A5\u53E3 = this.\u63A5\u53E3\u4EEC.find((\u63A5\u53E3) => {
67
- const \u63A5\u53E3\u7C7B\u578B = \u63A5\u53E3.\u83B7\u5F97\u63A5\u53E3\u7C7B\u578B();
68
- 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();
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();
69
94
  });
70
95
  if (\u76EE\u6807\u63A5\u53E3 != null) {
71
96
  await log.debug("\u547D\u4E2D\u63A5\u53E3");
72
- const \u63A5\u53E3\u7C7B\u578B = \u76EE\u6807\u63A5\u53E3.\u83B7\u5F97\u63A5\u53E3\u7C7B\u578B();
73
- const \u63A5\u53E3\u63D2\u4EF6 = \u63A5\u53E3\u7C7B\u578B.\u83B7\u5F97\u63D2\u4EF6\u4EEC();
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();
74
99
  await log.debug("\u627E\u5230 %o \u4E2A \u63D2\u4EF6, \u51C6\u5907\u6267\u884C...", \u63A5\u53E3\u63D2\u4EF6.length);
75
- 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), {});
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), {});
76
101
  await log.debug("\u63D2\u4EF6 \u6267\u884C\u5B8C\u6BD5");
77
102
  await log.debug("\u51C6\u5907\u6267\u884C\u63A5\u53E3\u903B\u8F91...");
78
- const \u63A5\u53E3\u7ED3\u679C = await \u76EE\u6807\u63A5\u53E3.\u63A5\u53E3\u5B9E\u73B0(\u63D2\u4EF6\u7ED3\u679C);
103
+ var \u63A5\u53E3\u7ED3\u679C = await \u76EE\u6807\u63A5\u53E3.\u63A5\u53E3\u5B9E\u73B0(\u63D2\u4EF6\u7ED3\u679C);
79
104
  await log.debug("\u63A5\u53E3\u903B\u8F91\u6267\u884C\u5B8C\u6BD5");
80
105
  await log.debug("\u51C6\u5907\u6267\u884C\u8FD4\u56DE\u903B\u8F91...");
81
106
  await \u63A5\u53E3\u7ED3\u679C.run(req, res);
@@ -102,12 +127,29 @@ var \u670D\u52A1\u5668 = class {
102
127
  res.send("\u670D\u52A1\u5668\u5185\u90E8\u9519\u8BEF");
103
128
  }
104
129
  });
105
- var server = null;
106
- await new Promise((res, _rej) => {
107
- 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
+ });
108
152
  });
109
- if (server == null)
110
- throw new Error("\u542F\u52A8\u670D\u52A1\u5668\u5931\u8D25");
111
153
  return {
112
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}`),
113
155
  server
@@ -0,0 +1,52 @@
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/tools/tools.ts
21
+ var tools_exports = {};
22
+ __export(tools_exports, {
23
+ \u622A\u65AD\u5B57\u7B26\u4E32: () => \u622A\u65AD\u5B57\u7B26\u4E32,
24
+ \u9012\u5F52\u622A\u65AD\u5B57\u7B26\u4E32: () => \u9012\u5F52\u622A\u65AD\u5B57\u7B26\u4E32
25
+ });
26
+ module.exports = __toCommonJS(tools_exports);
27
+ function \u622A\u65AD\u5B57\u7B26\u4E32(\u5185\u5BB9) {
28
+ var \u6700\u5927\u65E5\u5FD7\u957F\u5EA6 = 1e3;
29
+ if (\u5185\u5BB9.length > \u6700\u5927\u65E5\u5FD7\u957F\u5EA6)
30
+ return \u5185\u5BB9.slice(0, \u6700\u5927\u65E5\u5FD7\u957F\u5EA6) + "...";
31
+ return \u5185\u5BB9;
32
+ }
33
+ function \u9012\u5F52\u622A\u65AD\u5B57\u7B26\u4E32(\u6570\u636E) {
34
+ if (typeof \u6570\u636E === "string")
35
+ return \u622A\u65AD\u5B57\u7B26\u4E32(\u6570\u636E);
36
+ if (Array.isArray(\u6570\u636E))
37
+ return \u6570\u636E.map((\u9879) => \u9012\u5F52\u622A\u65AD\u5B57\u7B26\u4E32(\u9879));
38
+ if (typeof \u6570\u636E === "object" && \u6570\u636E !== null) {
39
+ const \u65B0\u6570\u636E = {};
40
+ for (const key in \u6570\u636E) {
41
+ if (\u6570\u636E.hasOwnProperty(key))
42
+ \u65B0\u6570\u636E[key] = \u9012\u5F52\u622A\u65AD\u5B57\u7B26\u4E32(\u6570\u636E[key]);
43
+ }
44
+ return \u65B0\u6570\u636E;
45
+ }
46
+ return \u6570\u636E;
47
+ }
48
+ // Annotate the CommonJS export names for ESM import in node:
49
+ 0 && (module.exports = {
50
+ \u622A\u65AD\u5B57\u7B26\u4E32,
51
+ \u9012\u5F52\u622A\u65AD\u5B57\u7B26\u4E32
52
+ });
@@ -0,0 +1,4 @@
1
+ declare function 截断字符串(内容: string): string;
2
+ declare function 递归截断字符串(数据: any): any;
3
+
4
+ export { 截断字符串, 递归截断字符串 };
@@ -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
  };
@@ -1,8 +1,8 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  main
4
- } from "../../chunk-7RH7Z7VC.js";
5
- import "../../chunk-OMGVOLYE.js";
4
+ } from "../../chunk-3DVNMDUP.js";
5
+ import "../../chunk-KRQ6KUVY.js";
6
6
 
7
7
  // src/bin/gen-type/bin.ts
8
8
  import path from "node:path";
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  main
3
- } from "../../chunk-7RH7Z7VC.js";
4
- import "../../chunk-OMGVOLYE.js";
3
+ } from "../../chunk-3DVNMDUP.js";
4
+ import "../../chunk-KRQ6KUVY.js";
5
5
  export {
6
6
  main
7
7
  };
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  附加代码
3
- } from "./chunk-OMGVOLYE.js";
3
+ } from "./chunk-KRQ6KUVY.js";
4
4
 
5
5
  // src/bin/gen-type/index.ts
6
6
  import { randomUUID } from "node:crypto";
@@ -45,12 +45,12 @@ async function main(tsconfig\u8DEF\u5F84, \u76EE\u6807\u8DEF\u5F84, \u8F93\u51FA
45
45
  await log.debug(`\u7B5B\u9009\u51FA ${\u76F8\u5173\u6E90\u6587\u4EF6\u4EEC.length} \u4E2A\u76F8\u5173\u6E90\u6587\u4EF6`);
46
46
  var \u4F34\u968F\u7684\u865A\u62DF\u6587\u4EF6\u4EEC = \u76F8\u5173\u6E90\u6587\u4EF6\u4EEC.map((a) => {
47
47
  var \u4EE3\u7801 = [
48
- `import { \u63A5\u53E3\u7C7B\u578B, \u5408\u5E76JSON\u63D2\u4EF6\u7ED3\u679C } from '@lsby/net-core'`,
48
+ `import { \u63A5\u53E3\u7C7B\u578B, \u5408\u5E76JSON\u63D2\u4EF6\u7ED3\u679C, \u53D6\u7B2C\u4E00\u4E2AWS\u63D2\u4EF6\u7ED3\u679C } from '@lsby/net-core'`,
49
49
  `import { z } from 'zod'`,
50
50
  `import \u5BFC\u5165 from "./${a.fileName.split("/").at(-1)?.replaceAll(".ts", "")}"`,
51
51
  ``,
52
52
  `
53
- type \u8BA1\u7B97\u7ED3\u679C =
53
+ type JSON\u63A5\u53E3\u8BA1\u7B97\u7ED3\u679C =
54
54
  typeof \u5BFC\u5165 extends \u63A5\u53E3\u7C7B\u578B<infer Path, infer Method, infer PreApis, infer SuccessSchema, infer ErrorSchema>
55
55
  ? Path extends string
56
56
  ? {
@@ -62,6 +62,19 @@ async function main(tsconfig\u8DEF\u5F84, \u76EE\u6807\u8DEF\u5F84, \u8F93\u51FA
62
62
  }
63
63
  : never
64
64
  : never
65
+ type WS\u63A5\u53E3\u8BA1\u7B97\u7ED3\u679C =
66
+ typeof \u5BFC\u5165 extends \u63A5\u53E3\u7C7B\u578B<infer Path, infer Method, infer PreApis, infer SuccessSchema, infer ErrorSchema>
67
+ ? Path extends string
68
+ ? \u53D6\u7B2C\u4E00\u4E2AWS\u63D2\u4EF6\u7ED3\u679C<PreApis> extends infer R
69
+ ? {} extends R
70
+ ? never
71
+ : {
72
+ path: Path
73
+ data: \u53D6\u7B2C\u4E00\u4E2AWS\u63D2\u4EF6\u7ED3\u679C<PreApis>
74
+ }
75
+ : never
76
+ : never
77
+ : never
65
78
  `
66
79
  ];
67
80
  return ts.createSourceFile(
@@ -85,12 +98,22 @@ async function main(tsconfig\u8DEF\u5F84, \u76EE\u6807\u8DEF\u5F84, \u8F93\u51FA
85
98
  oldProgram: \u9879\u76EE
86
99
  });
87
100
  var \u7C7B\u578B\u68C0\u67E5\u5668 = \u65B0\u9879\u76EE.getTypeChecker();
88
- var \u68C0\u67E5\u7ED3\u679C = [];
101
+ var JSON\u7ED3\u679C = [];
102
+ var WS\u7ED3\u679C = [];
89
103
  for (var \u6E90\u6587\u4EF6 of \u4F34\u968F\u7684\u865A\u62DF\u6587\u4EF6\u4EEC) {
90
104
  ts.forEachChild(\u6E90\u6587\u4EF6, (node) => {
91
- if (ts.isTypeAliasDeclaration(node) && node.name.text === "\u8BA1\u7B97\u7ED3\u679C") {
105
+ if (ts.isTypeAliasDeclaration(node) && node.name.text === "JSON\u63A5\u53E3\u8BA1\u7B97\u7ED3\u679C") {
106
+ const type = \u7C7B\u578B\u68C0\u67E5\u5668.getTypeAtLocation(node);
107
+ JSON\u7ED3\u679C.push(
108
+ \u7C7B\u578B\u68C0\u67E5\u5668.typeToString(
109
+ type,
110
+ void 0,
111
+ ts.TypeFormatFlags.NoTruncation | ts.TypeFormatFlags.AllowUniqueESSymbolType | ts.TypeFormatFlags.UseAliasDefinedOutsideCurrentScope
112
+ )
113
+ );
114
+ } else if (ts.isTypeAliasDeclaration(node) && node.name.text === "WS\u63A5\u53E3\u8BA1\u7B97\u7ED3\u679C") {
92
115
  const type = \u7C7B\u578B\u68C0\u67E5\u5668.getTypeAtLocation(node);
93
- \u68C0\u67E5\u7ED3\u679C.push(
116
+ WS\u7ED3\u679C.push(
94
117
  \u7C7B\u578B\u68C0\u67E5\u5668.typeToString(
95
118
  type,
96
119
  void 0,
@@ -100,9 +123,15 @@ async function main(tsconfig\u8DEF\u5F84, \u76EE\u6807\u8DEF\u5F84, \u8F93\u51FA
100
123
  }
101
124
  });
102
125
  }
103
- var \u6700\u7EC8\u7ED3\u679C = Array.from(new Set(\u68C0\u67E5\u7ED3\u679C.filter((a) => a != "any" && a != "never" && a != "unknown")));
104
- await log.debug(`\u6700\u7EC8\u7B5B\u9009\u51FA ${\u6700\u7EC8\u7ED3\u679C.length} \u4E2A\u63A5\u53E3\u7C7B\u578B`);
105
- var \u6700\u7EC8\u4EE3\u7801 = [`export type InterfaceType = [${\u6700\u7EC8\u7ED3\u679C.join(",")}]`, \u9644\u52A0\u4EE3\u7801];
126
+ var \u6700\u7EC8\u7ED3\u679C_JSON = Array.from(new Set(JSON\u7ED3\u679C.filter((a) => a != "any" && a != "never" && a != "unknown")));
127
+ await log.debug(`\u6700\u7EC8\u7B5B\u9009\u51FA ${\u6700\u7EC8\u7ED3\u679C_JSON.length} \u4E2A\u63A5\u53E3\u7C7B\u578B`);
128
+ var \u6700\u7EC8\u7ED3\u679C_WS = Array.from(new Set(WS\u7ED3\u679C.filter((a) => a != "any" && a != "never" && a != "unknown")));
129
+ await log.debug(`\u6700\u7EC8\u7B5B\u9009\u51FA ${\u6700\u7EC8\u7ED3\u679C_WS.length} \u4E2Aws\u63A5\u53E3\u7C7B\u578B`);
130
+ var \u6700\u7EC8\u4EE3\u7801 = [
131
+ `export type InterfaceType = [${\u6700\u7EC8\u7ED3\u679C_JSON.join(",")}]`,
132
+ `export type InterfaceWsType = [${\u6700\u7EC8\u7ED3\u679C_WS.join(",")}]`,
133
+ \u9644\u52A0\u4EE3\u7801
134
+ ];
106
135
  await log.debug("\u6700\u7EC8\u4EE3\u7801\u751F\u6210\u5B8C\u6210");
107
136
  var \u8F93\u51FA\u6587\u4EF6\u5939 = path.dirname(\u8F93\u51FA\u6587\u4EF6\u8DEF\u5F84);
108
137
  if (!fs.existsSync(\u8F93\u51FA\u6587\u4EF6\u5939))
@@ -1,9 +1,12 @@
1
- import {
2
- Global
3
- } from "./chunk-AHCV3LQ7.js";
4
1
  import {
5
2
  插件
6
3
  } from "./chunk-N4NY37XI.js";
4
+ import {
5
+ 递归截断字符串
6
+ } from "./chunk-ES4NZ4EM.js";
7
+ import {
8
+ Global
9
+ } from "./chunk-BC6IISWS.js";
7
10
 
8
11
  // src/plugin/extend/json.ts
9
12
  import { format } from "node:util";
@@ -18,13 +21,13 @@ var JSON\u89E3\u6790\u63D2\u4EF6 = class extends \u63D2\u4EF6 {
18
21
  pRes(null);
19
22
  })
20
23
  );
21
- await log.debug("\u51C6\u5907\u89E3\u6790 JSON\uFF1A%o", req.body);
24
+ await log.debug("\u51C6\u5907\u89E3\u6790 JSON\uFF1A%o", \u9012\u5F52\u622A\u65AD\u5B57\u7B26\u4E32(req.body));
22
25
  const parseResult = t.safeParse(req.body);
23
26
  if (!parseResult.success) {
24
27
  await log.err("\u89E3\u6790 JSON \u5931\u8D25\uFF1A%o", parseResult.error);
25
28
  throw new Error(format("\u89E3\u6790 JSON \u5931\u8D25: %O", parseResult.error));
26
29
  }
27
- await log.debug("\u6210\u529F\u89E3\u6790 JSON\uFF1A%o", parseResult.data);
30
+ await log.debug("\u6210\u529F\u89E3\u6790 JSON");
28
31
  return parseResult.data;
29
32
  });
30
33
  }
@@ -0,0 +1,45 @@
1
+ import {
2
+ 插件
3
+ } from "./chunk-N4NY37XI.js";
4
+ import {
5
+ Global
6
+ } from "./chunk-BC6IISWS.js";
7
+
8
+ // src/plugin/extend/web-socket.ts
9
+ import { z } from "zod";
10
+ var WebSocket\u63D2\u4EF6 = class extends \u63D2\u4EF6 {
11
+ constructor(\u4FE1\u606F\u63CF\u8FF0) {
12
+ super(
13
+ z.object({
14
+ ws\u64CD\u4F5C: z.object({
15
+ \u53D1\u9001ws\u4FE1\u606F: z.function(z.tuple([\u4FE1\u606F\u63CF\u8FF0]), z.promise(z.void())),
16
+ \u5173\u95EDws\u8FDE\u63A5: z.function(z.tuple([]), z.promise(z.void()))
17
+ }).or(z.undefined())
18
+ }),
19
+ async (req, _res) => {
20
+ var wsId = req.headers["ws-client-id"];
21
+ var WebSocket\u7BA1\u7406\u8005 = await Global.getItem("WebSocket\u7BA1\u7406\u8005");
22
+ var ws\u53E5\u67C4 = null;
23
+ if (typeof wsId == "string")
24
+ ws\u53E5\u67C4 = await WebSocket\u7BA1\u7406\u8005.\u83B7\u5F97\u53E5\u67C4(wsId);
25
+ if (!ws\u53E5\u67C4)
26
+ return { ws\u64CD\u4F5C: void 0 };
27
+ var \u5B58\u5728\u7684ws\u53E5\u67C4 = ws\u53E5\u67C4;
28
+ return {
29
+ ws\u64CD\u4F5C: {
30
+ async \u53D1\u9001ws\u4FE1\u606F(\u4FE1\u606F) {
31
+ \u5B58\u5728\u7684ws\u53E5\u67C4.send(JSON.stringify(\u4FE1\u606F));
32
+ },
33
+ async \u5173\u95EDws\u8FDE\u63A5() {
34
+ \u5B58\u5728\u7684ws\u53E5\u67C4.close();
35
+ }
36
+ }
37
+ };
38
+ }
39
+ );
40
+ }
41
+ };
42
+
43
+ export {
44
+ WebSocket插件
45
+ };
@@ -1,9 +1,16 @@
1
+ import {
2
+ WebSocket管理者
3
+ } from "./chunk-EAVNASDB.js";
4
+
1
5
  // src/global/global.ts
2
6
  import { GlobalAsyncItem, GlobalService } from "@lsby/ts-global";
3
7
  import { Log } from "@lsby/ts-log";
4
8
  var Global = new GlobalService([
5
9
  new GlobalAsyncItem("log", async () => {
6
10
  return new Log("@lsby:net-core");
11
+ }),
12
+ new GlobalAsyncItem("WebSocket\u7BA1\u7406\u8005", async () => {
13
+ return new WebSocket\u7BA1\u7406\u8005({});
7
14
  })
8
15
  ]);
9
16
 
@@ -1,11 +1,12 @@
1
1
  import {
2
2
  Global
3
- } from "./chunk-AHCV3LQ7.js";
3
+ } from "./chunk-BC6IISWS.js";
4
4
 
5
5
  // src/server/server.ts
6
6
  import { networkInterfaces } from "node:os";
7
7
  import express from "express";
8
8
  import short from "short-uuid";
9
+ import { WebSocketServer } from "ws";
9
10
  var \u670D\u52A1\u5668 = class {
10
11
  constructor(\u63A5\u53E3\u4EEC, \u7AEF\u53E3, \u9759\u6001\u8D44\u6E90\u8DEF\u5F84) {
11
12
  this.\u63A5\u53E3\u4EEC = \u63A5\u53E3\u4EEC;
@@ -14,27 +15,27 @@ var \u670D\u52A1\u5668 = class {
14
15
  }
15
16
  log = Global.getItem("log");
16
17
  async run() {
17
- const app = express();
18
+ var app = express();
18
19
  app.use(async (req, res) => {
19
20
  var log = (await this.log).extend("\u8BF7\u6C42").extend(short().new());
20
21
  try {
21
- const \u8BF7\u6C42\u8DEF\u5F84 = req.path;
22
- const \u8BF7\u6C42\u65B9\u6CD5 = req.method.toLowerCase();
22
+ var \u8BF7\u6C42\u8DEF\u5F84 = req.path;
23
+ var \u8BF7\u6C42\u65B9\u6CD5 = req.method.toLowerCase();
23
24
  await log.debug("\u6536\u5230\u8BF7\u6C42, \u8DEF\u5F84: %o, \u65B9\u6CD5: %o", \u8BF7\u6C42\u8DEF\u5F84, \u8BF7\u6C42\u65B9\u6CD5);
24
25
  await log.debug("\u5C1D\u8BD5\u5339\u914D\u63A5\u53E3...");
25
- const \u76EE\u6807\u63A5\u53E3 = this.\u63A5\u53E3\u4EEC.find((\u63A5\u53E3) => {
26
- const \u63A5\u53E3\u7C7B\u578B = \u63A5\u53E3.\u83B7\u5F97\u63A5\u53E3\u7C7B\u578B();
27
- 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();
26
+ var \u76EE\u6807\u63A5\u53E3 = this.\u63A5\u53E3\u4EEC.find((\u63A5\u53E3) => {
27
+ var \u63A5\u53E3\u7C7B\u578B2 = \u63A5\u53E3.\u83B7\u5F97\u63A5\u53E3\u7C7B\u578B();
28
+ 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();
28
29
  });
29
30
  if (\u76EE\u6807\u63A5\u53E3 != null) {
30
31
  await log.debug("\u547D\u4E2D\u63A5\u53E3");
31
- const \u63A5\u53E3\u7C7B\u578B = \u76EE\u6807\u63A5\u53E3.\u83B7\u5F97\u63A5\u53E3\u7C7B\u578B();
32
- const \u63A5\u53E3\u63D2\u4EF6 = \u63A5\u53E3\u7C7B\u578B.\u83B7\u5F97\u63D2\u4EF6\u4EEC();
32
+ var \u63A5\u53E3\u7C7B\u578B = \u76EE\u6807\u63A5\u53E3.\u83B7\u5F97\u63A5\u53E3\u7C7B\u578B();
33
+ var \u63A5\u53E3\u63D2\u4EF6 = \u63A5\u53E3\u7C7B\u578B.\u83B7\u5F97\u63D2\u4EF6\u4EEC();
33
34
  await log.debug("\u627E\u5230 %o \u4E2A \u63D2\u4EF6, \u51C6\u5907\u6267\u884C...", \u63A5\u53E3\u63D2\u4EF6.length);
34
- 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), {});
35
+ 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), {});
35
36
  await log.debug("\u63D2\u4EF6 \u6267\u884C\u5B8C\u6BD5");
36
37
  await log.debug("\u51C6\u5907\u6267\u884C\u63A5\u53E3\u903B\u8F91...");
37
- const \u63A5\u53E3\u7ED3\u679C = await \u76EE\u6807\u63A5\u53E3.\u63A5\u53E3\u5B9E\u73B0(\u63D2\u4EF6\u7ED3\u679C);
38
+ var \u63A5\u53E3\u7ED3\u679C = await \u76EE\u6807\u63A5\u53E3.\u63A5\u53E3\u5B9E\u73B0(\u63D2\u4EF6\u7ED3\u679C);
38
39
  await log.debug("\u63A5\u53E3\u903B\u8F91\u6267\u884C\u5B8C\u6BD5");
39
40
  await log.debug("\u51C6\u5907\u6267\u884C\u8FD4\u56DE\u903B\u8F91...");
40
41
  await \u63A5\u53E3\u7ED3\u679C.run(req, res);
@@ -61,12 +62,29 @@ var \u670D\u52A1\u5668 = class {
61
62
  res.send("\u670D\u52A1\u5668\u5185\u90E8\u9519\u8BEF");
62
63
  }
63
64
  });
64
- var server = null;
65
- await new Promise((res, _rej) => {
66
- server = app.listen(this.\u7AEF\u53E3, () => res());
65
+ var server = app.listen(this.\u7AEF\u53E3);
66
+ var wss = new WebSocketServer({ server });
67
+ wss.on("connection", async (ws, req) => {
68
+ var log = (await this.log).extend("WebSocket").extend(short().new());
69
+ await log.debug(`WebSocket \u8BF7\u6C42\u8FDE\u63A5: ${req.url}`);
70
+ var WebSocket\u7BA1\u7406\u8005 = await Global.getItem("WebSocket\u7BA1\u7406\u8005");
71
+ var \u5BA2\u6237\u7AEFid = req.url?.split("?id=")[1];
72
+ if (!\u5BA2\u6237\u7AEFid)
73
+ return ws.close(4001, "\u7F3A\u5C11\u5BA2\u6237\u7AEF ID");
74
+ if (await WebSocket\u7BA1\u7406\u8005.\u67E5\u8BE2\u8FDE\u63A5\u5B58\u5728(\u5BA2\u6237\u7AEFid) == true)
75
+ return ws.close(4002, "\u5BA2\u6237\u7AEF ID \u5DF2\u5B58\u5728");
76
+ var \u5B58\u5728\u7684\u5BA2\u6237\u7AEFid = \u5BA2\u6237\u7AEFid;
77
+ await WebSocket\u7BA1\u7406\u8005.\u589E\u52A0\u8FDE\u63A5(\u5BA2\u6237\u7AEFid, ws);
78
+ await log.debug(`WebSocket \u8FDE\u63A5\u5DF2\u5EFA\u7ACB, \u5BA2\u6237\u7AEFid: ${\u5BA2\u6237\u7AEFid}`);
79
+ ws.on("close", async () => {
80
+ await log.debug(`WebSocket \u8FDE\u63A5\u5DF2\u5173\u95ED: ${\u5BA2\u6237\u7AEFid}`);
81
+ await WebSocket\u7BA1\u7406\u8005.\u5220\u9664\u8FDE\u63A5(\u5B58\u5728\u7684\u5BA2\u6237\u7AEFid);
82
+ });
83
+ ws.on("error", async (err) => {
84
+ await log.err(`WebSocket \u51FA\u73B0\u9519\u8BEF ${\u5BA2\u6237\u7AEFid}: %o`, err);
85
+ await WebSocket\u7BA1\u7406\u8005.\u5220\u9664\u8FDE\u63A5(\u5B58\u5728\u7684\u5BA2\u6237\u7AEFid);
86
+ });
67
87
  });
68
- if (server == null)
69
- throw new Error("\u542F\u52A8\u670D\u52A1\u5668\u5931\u8D25");
70
88
  return {
71
89
  ip: Object.values(networkInterfaces()).flat().flatMap((address) => address !== void 0 ? [address] : []).map((wrappedAddress) => wrappedAddress.address).map((address) => `http://${address}:${this.\u7AEF\u53E3}`),
72
90
  server
@@ -0,0 +1,22 @@
1
+ // src/global/ws.ts
2
+ var WebSocket\u7BA1\u7406\u8005 = class {
3
+ constructor(\u8FDE\u63A5\u8868) {
4
+ this.\u8FDE\u63A5\u8868 = \u8FDE\u63A5\u8868;
5
+ }
6
+ async \u589E\u52A0\u8FDE\u63A5(\u8BF7\u6C42id, ws\u53E5\u67C4) {
7
+ this.\u8FDE\u63A5\u8868[\u8BF7\u6C42id] = ws\u53E5\u67C4;
8
+ }
9
+ async \u67E5\u8BE2\u8FDE\u63A5\u5B58\u5728(\u8BF7\u6C42id) {
10
+ return this.\u8FDE\u63A5\u8868[\u8BF7\u6C42id] == null ? false : true;
11
+ }
12
+ async \u83B7\u5F97\u53E5\u67C4(\u8BF7\u6C42id) {
13
+ return this.\u8FDE\u63A5\u8868[\u8BF7\u6C42id] || null;
14
+ }
15
+ async \u5220\u9664\u8FDE\u63A5(id) {
16
+ delete this.\u8FDE\u63A5\u8868[id];
17
+ }
18
+ };
19
+
20
+ export {
21
+ WebSocket管理者
22
+ };
@@ -0,0 +1,27 @@
1
+ // src/tools/tools.ts
2
+ function \u622A\u65AD\u5B57\u7B26\u4E32(\u5185\u5BB9) {
3
+ var \u6700\u5927\u65E5\u5FD7\u957F\u5EA6 = 1e3;
4
+ if (\u5185\u5BB9.length > \u6700\u5927\u65E5\u5FD7\u957F\u5EA6)
5
+ return \u5185\u5BB9.slice(0, \u6700\u5927\u65E5\u5FD7\u957F\u5EA6) + "...";
6
+ return \u5185\u5BB9;
7
+ }
8
+ function \u9012\u5F52\u622A\u65AD\u5B57\u7B26\u4E32(\u6570\u636E) {
9
+ if (typeof \u6570\u636E === "string")
10
+ return \u622A\u65AD\u5B57\u7B26\u4E32(\u6570\u636E);
11
+ if (Array.isArray(\u6570\u636E))
12
+ return \u6570\u636E.map((\u9879) => \u9012\u5F52\u622A\u65AD\u5B57\u7B26\u4E32(\u9879));
13
+ if (typeof \u6570\u636E === "object" && \u6570\u636E !== null) {
14
+ const \u65B0\u6570\u636E = {};
15
+ for (const key in \u6570\u636E) {
16
+ if (\u6570\u636E.hasOwnProperty(key))
17
+ \u65B0\u6570\u636E[key] = \u9012\u5F52\u622A\u65AD\u5B57\u7B26\u4E32(\u6570\u636E[key]);
18
+ }
19
+ return \u65B0\u6570\u636E;
20
+ }
21
+ return \u6570\u636E;
22
+ }
23
+
24
+ export {
25
+ 截断字符串,
26
+ 递归截断字符串
27
+ };
@@ -7,7 +7,7 @@ import {
7
7
  import {
8
8
  正确JSON结果,
9
9
  错误JSON结果
10
- } from "./chunk-IPDMEQ3O.js";
10
+ } from "./chunk-PKE7OYIU.js";
11
11
 
12
12
  // src/interface/extend/json-wrap.ts
13
13
  import { z } from "zod";
@@ -4,7 +4,7 @@ import {
4
4
  import {
5
5
  正确JSON结果,
6
6
  错误JSON结果
7
- } from "./chunk-IPDMEQ3O.js";
7
+ } from "./chunk-PKE7OYIU.js";
8
8
 
9
9
  // src/interface/extend/json-base.ts
10
10
  var JSON\u63A5\u53E3 = class extends \u63A5\u53E3 {
@@ -43,6 +43,17 @@ export type \u4ECE\u8DEF\u5F84\u83B7\u5F97\u53C2\u6570<Path, A = InterfaceType>
43
43
  : \u4ECE\u8DEF\u5F84\u83B7\u5F97\u53C2\u6570<Path, xs>
44
44
  : never
45
45
  : never
46
+ export type \u4ECE\u8DEF\u5F84\u83B7\u5F97WS\u53C2\u6570<Path, A = InterfaceWsType> = A extends []
47
+ ? never
48
+ : A extends [infer x, ...infer xs]
49
+ ? 'path' extends keyof x
50
+ ? x['path'] extends Path
51
+ ? 'data' extends keyof x
52
+ ? x['data']
53
+ : never
54
+ : \u4ECE\u8DEF\u5F84\u83B7\u5F97WS\u53C2\u6570<Path, xs>
55
+ : never
56
+ : never
46
57
  export type \u4ECE\u8DEF\u5F84\u83B7\u5F97\u65B9\u6CD5<Path, A = InterfaceType> = A extends []
47
58
  ? never
48
59
  : A extends [infer x, ...infer xs]
@@ -102,6 +113,9 @@ export type Get\u8BF7\u6C42\u540E\u7AEF\u51FD\u6570\u7C7B\u578B = <\u8DEF\u5F84
102
113
  export type Post\u8BF7\u6C42\u540E\u7AEF\u51FD\u6570\u7C7B\u578B = <\u8DEF\u5F84 extends \u5143\u7EC4\u8F6C\u8054\u5408<Post\u63A5\u53E3\u8DEF\u5F84\u4EEC>>(
103
114
  \u8DEF\u5F84: \u8DEF\u5F84,
104
115
  \u53C2\u6570: \u4ECE\u8DEF\u5F84\u83B7\u5F97\u53C2\u6570<\u8DEF\u5F84>,
116
+ ws\u4FE1\u606F\u56DE\u8C03?: (\u4FE1\u606F: \u4ECE\u8DEF\u5F84\u83B7\u5F97WS\u53C2\u6570<\u8DEF\u5F84>) => void,
117
+ ws\u5173\u95ED\u56DE\u8C03?: (\u4FE1\u606F: CloseEvent) => void,
118
+ ws\u9519\u8BEF\u56DE\u8C03?: (\u4FE1\u606F: Event) => void,
105
119
  ) => Promise<\u4ECE\u8DEF\u5F84\u83B7\u5F97\u6B63\u786E\u8FD4\u56DE<\u8DEF\u5F84> | \u4ECE\u8DEF\u5F84\u83B7\u5F97\u9519\u8BEF\u8FD4\u56DE<\u8DEF\u5F84>>
106
120
  `;
107
121