@lsby/net-core 0.10.3 → 0.11.2
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/cjs/index.cjs +48 -45
- package/dist/cjs/index.d.cts +1 -1
- package/dist/cjs/interface/interface-base.d.cts +1 -1
- package/dist/cjs/interface/interface-logic.d.cts +1 -1
- package/dist/cjs/interface/interface-result.d.cts +1 -1
- package/dist/cjs/{interface-base-CyfrfgWu.d.cts → interface-base-gRngpxki.d.cts} +6 -5
- package/dist/cjs/plugin/extend/custom-data.d.cts +1 -1
- package/dist/cjs/plugin/extend/json.d.cts +1 -1
- package/dist/cjs/plugin/extend/log-headers.d.cts +1 -1
- package/dist/cjs/plugin/extend/query.d.cts +1 -1
- package/dist/cjs/plugin/extend/urlencoded.d.cts +1 -1
- package/dist/cjs/plugin/extend/web-socket.d.cts +1 -1
- package/dist/cjs/plugin/plug.d.cts +1 -1
- package/dist/cjs/server/server.cjs +48 -45
- package/dist/cjs/server/server.d.cts +1 -1
- package/dist/cjs/wrapper/common-wrapper-return.d.cts +1 -1
- package/dist/cjs/wrapper/common-wrapper.d.cts +1 -1
- package/dist/cjs/wrapper/deferred-result-wrapper.d.cts +1 -1
- package/dist/cjs/wrapper/express-compatible-wrapper.d.cts +1 -1
- package/dist/cjs/wrapper/file-download-wrapper.d.cts +1 -1
- package/dist/esm/{chunk-3ZQFVYIR.js → chunk-NRUNCIP7.js} +48 -45
- package/dist/esm/index.d.ts +1 -1
- package/dist/esm/index.js +1 -1
- package/dist/esm/interface/interface-base.d.ts +1 -1
- package/dist/esm/interface/interface-logic.d.ts +1 -1
- package/dist/esm/interface/interface-result.d.ts +1 -1
- package/dist/esm/{interface-base-C1ZNSMJz.d.ts → interface-base-DDfmN_Dg.d.ts} +6 -5
- package/dist/esm/plugin/extend/custom-data.d.ts +1 -1
- package/dist/esm/plugin/extend/json.d.ts +1 -1
- package/dist/esm/plugin/extend/log-headers.d.ts +1 -1
- package/dist/esm/plugin/extend/query.d.ts +1 -1
- package/dist/esm/plugin/extend/urlencoded.d.ts +1 -1
- package/dist/esm/plugin/extend/web-socket.d.ts +1 -1
- package/dist/esm/plugin/plug.d.ts +1 -1
- package/dist/esm/server/server.d.ts +1 -1
- package/dist/esm/server/server.js +1 -1
- package/dist/esm/wrapper/common-wrapper-return.d.ts +1 -1
- package/dist/esm/wrapper/common-wrapper.d.ts +1 -1
- package/dist/esm/wrapper/deferred-result-wrapper.d.ts +1 -1
- package/dist/esm/wrapper/express-compatible-wrapper.d.ts +1 -1
- package/dist/esm/wrapper/file-download-wrapper.d.ts +1 -1
- package/package.json +1 -1
package/dist/cjs/index.cjs
CHANGED
|
@@ -552,8 +552,8 @@ var import_node_os = require("os");
|
|
|
552
552
|
var import_short_uuid = __toESM(require("short-uuid"), 1);
|
|
553
553
|
var import_ws3 = require("ws");
|
|
554
554
|
var \u670D\u52A1\u5668 = class {
|
|
555
|
-
|
|
556
|
-
\
|
|
555
|
+
log;
|
|
556
|
+
\u65E5\u5FD7\u56DE\u8C03;
|
|
557
557
|
\u63A5\u53E3\u4EEC;
|
|
558
558
|
\u7AEF\u53E3;
|
|
559
559
|
\u9759\u6001\u8D44\u6E90\u8DEF\u5F84;
|
|
@@ -563,14 +563,17 @@ var \u670D\u52A1\u5668 = class {
|
|
|
563
563
|
this.\u7AEF\u53E3 = options.\u7AEF\u53E3;
|
|
564
564
|
this.\u9759\u6001\u8D44\u6E90\u8DEF\u5F84 = options.\u9759\u6001\u8D44\u6E90\u8DEF\u5F84;
|
|
565
565
|
this.\u9ED8\u8BA4get\u6587\u4EF6\u8DEF\u5F84 = options.\u9ED8\u8BA4get\u6587\u4EF6\u8DEF\u5F84;
|
|
566
|
-
this.\
|
|
567
|
-
this
|
|
566
|
+
this.\u65E5\u5FD7\u56DE\u8C03 = options.\u65E5\u5FD7\u56DE\u8C03;
|
|
567
|
+
this.log = Global.getItem("log").then((a) => {
|
|
568
|
+
if (this.\u65E5\u5FD7\u56DE\u8C03 !== void 0) a.pipe(this.\u65E5\u5FD7\u56DE\u8C03);
|
|
569
|
+
return a;
|
|
570
|
+
});
|
|
568
571
|
}
|
|
569
572
|
async run() {
|
|
573
|
+
let log2 = await this.log;
|
|
570
574
|
let app = (0, import_express3.default)();
|
|
571
|
-
let \u7CFB\u7EDFlog = await this.\u7CFB\u7EDFlog;
|
|
572
575
|
if (this.\u9759\u6001\u8D44\u6E90\u8DEF\u5F84 !== void 0) {
|
|
573
|
-
await
|
|
576
|
+
await log2.debug(`\u8BBE\u7F6E\u9759\u6001\u8D44\u6E90\u8DEF\u5F84: ${this.\u9759\u6001\u8D44\u6E90\u8DEF\u5F84}`);
|
|
574
577
|
app.use(import_express3.default.static(this.\u9759\u6001\u8D44\u6E90\u8DEF\u5F84));
|
|
575
578
|
}
|
|
576
579
|
app.use(this.\u5904\u7406\u8BF7\u6C42.bind(this));
|
|
@@ -580,17 +583,16 @@ var \u670D\u52A1\u5668 = class {
|
|
|
580
583
|
}
|
|
581
584
|
async \u5904\u7406\u8BF7\u6C42(req, res) {
|
|
582
585
|
let \u8BF7\u6C42id = (0, import_short_uuid.default)().new();
|
|
583
|
-
let
|
|
584
|
-
let \u63A5\u53E3log = (await this.\u63A5\u53E3log).extend(\u8BF7\u6C42id);
|
|
586
|
+
let log2 = (await this.log).extend(\u8BF7\u6C42id);
|
|
585
587
|
let \u5F00\u59CB\u65F6\u95F4 = Date.now();
|
|
586
588
|
try {
|
|
587
589
|
let { path: \u8BF7\u6C42\u8DEF\u5F84, method } = req;
|
|
588
590
|
\u8BF7\u6C42\u8DEF\u5F84 = decodeURIComponent(\u8BF7\u6C42\u8DEF\u5F84);
|
|
589
591
|
let \u8BF7\u6C42\u65B9\u6CD5 = method.toLowerCase();
|
|
590
|
-
await
|
|
592
|
+
await log2.debug("\u6536\u5230\u8BF7\u6C42, \u8DEF\u5F84: %o, \u65B9\u6CD5: %o", \u8BF7\u6C42\u8DEF\u5F84, \u8BF7\u6C42\u65B9\u6CD5);
|
|
591
593
|
let \u76EE\u6807\u63A5\u53E3 = this.\u63A5\u53E3\u4EEC.find((\u63A5\u53E32) => \u8BF7\u6C42\u65B9\u6CD5 === \u63A5\u53E32.\u83B7\u5F97\u65B9\u6CD5() && \u8BF7\u6C42\u8DEF\u5F84 === \u63A5\u53E32.\u83B7\u5F97\u8DEF\u5F84()) ?? null;
|
|
592
594
|
if (\u76EE\u6807\u63A5\u53E3 !== null) {
|
|
593
|
-
await this.\u5904\u7406\u63A5\u53E3\u903B\u8F91(req, res, \u76EE\u6807\u63A5\u53E3,
|
|
595
|
+
await this.\u5904\u7406\u63A5\u53E3\u903B\u8F91({ req, res, \u76EE\u6807\u63A5\u53E3, log: log2, \u8BF7\u6C42id });
|
|
594
596
|
return;
|
|
595
597
|
}
|
|
596
598
|
if (this.\u9ED8\u8BA4get\u6587\u4EF6\u8DEF\u5F84 !== void 0 && \u8BF7\u6C42\u65B9\u6CD5 === "get") {
|
|
@@ -599,35 +601,36 @@ var \u670D\u52A1\u5668 = class {
|
|
|
599
601
|
res.send(\u9ED8\u8BA4\u6587\u4EF6\u5185\u5BB9);
|
|
600
602
|
return;
|
|
601
603
|
} catch (e) {
|
|
602
|
-
await
|
|
604
|
+
await log2.error("\u8FD4\u56DE\u9ED8\u8BA4get\u6587\u4EF6\u5185\u5BB9\u5931\u8D25: %o", String(e));
|
|
603
605
|
}
|
|
604
606
|
}
|
|
605
|
-
await
|
|
607
|
+
await log2.debug("\u6CA1\u6709\u547D\u4E2D\u4EFB\u4F55\u8D44\u6E90");
|
|
606
608
|
res.status(404).end();
|
|
607
609
|
} catch (error) {
|
|
608
|
-
await
|
|
610
|
+
await log2.error(error);
|
|
609
611
|
res.status(500).send("\u670D\u52A1\u5668\u5185\u90E8\u9519\u8BEF");
|
|
610
612
|
} finally {
|
|
611
613
|
let \u8017\u65F6ms = Date.now() - \u5F00\u59CB\u65F6\u95F4;
|
|
612
|
-
await
|
|
614
|
+
await log2.info("\u8BF7\u6C42\u5B8C\u6210, \u8017\u65F6: %o ms", \u8017\u65F6ms);
|
|
613
615
|
}
|
|
614
616
|
}
|
|
615
|
-
async \u5904\u7406\u63A5\u53E3\u903B\u8F91(
|
|
617
|
+
async \u5904\u7406\u63A5\u53E3\u903B\u8F91(opt) {
|
|
618
|
+
let { req, res, \u76EE\u6807\u63A5\u53E3, log: log2, \u8BF7\u6C42id } = opt;
|
|
616
619
|
let \u63A5\u53E3\u903B\u8F912 = \u76EE\u6807\u63A5\u53E3.\u83B7\u5F97\u903B\u8F91();
|
|
617
620
|
let \u7ED3\u679C\u8F6C\u6362\u5668 = \u76EE\u6807\u63A5\u53E3.\u83B7\u5F97\u7ED3\u679C\u8F6C\u6362\u5668();
|
|
618
621
|
let \u7ED3\u679C\u8FD4\u56DE\u5668 = \u76EE\u6807\u63A5\u53E3.\u83B7\u5F97\u7ED3\u679C\u8FD4\u56DE\u5668();
|
|
619
622
|
let \u603B\u5F00\u59CB = Date.now();
|
|
620
623
|
let \u5F00\u59CB = Date.now();
|
|
621
|
-
await
|
|
624
|
+
await log2.debug("\u8C03\u7528\u63A5\u53E3\u903B\u8F91...");
|
|
622
625
|
let \u63D2\u4EF6\u4EEC = \u63A5\u53E3\u903B\u8F912.\u83B7\u5F97\u63D2\u4EF6\u4EEC();
|
|
623
|
-
await
|
|
624
|
-
let \u63D2\u4EF6\u7ED3\u679C = await \u63A5\u53E3\u903B\u8F912.\u8BA1\u7B97\u63D2\u4EF6\u7ED3\u679C(req, res, { log: \
|
|
625
|
-
await
|
|
626
|
-
await
|
|
627
|
-
let \u63A5\u53E3\u7ED3\u679C = await \u63A5\u53E3\u903B\u8F912.\u901A\u8FC7\u63D2\u4EF6\u7ED3\u679C\u8FD0\u884C(\u63D2\u4EF6\u7ED3\u679C, {}, { log: \
|
|
628
|
-
await
|
|
626
|
+
await log2.debug("\u627E\u5230 %o \u4E2A \u63D2\u4EF6, \u51C6\u5907\u6267\u884C...", \u63D2\u4EF6\u4EEC.length);
|
|
627
|
+
let \u63D2\u4EF6\u7ED3\u679C = await \u63A5\u53E3\u903B\u8F912.\u8BA1\u7B97\u63D2\u4EF6\u7ED3\u679C(req, res, { log: log2, \u8BF7\u6C42id });
|
|
628
|
+
await log2.debug("\u63D2\u4EF6 \u6267\u884C\u5B8C\u6BD5");
|
|
629
|
+
await log2.debug("\u51C6\u5907\u6267\u884C\u63A5\u53E3\u5B9E\u73B0...");
|
|
630
|
+
let \u63A5\u53E3\u7ED3\u679C = await \u63A5\u53E3\u903B\u8F912.\u901A\u8FC7\u63D2\u4EF6\u7ED3\u679C\u8FD0\u884C(\u63D2\u4EF6\u7ED3\u679C, {}, { log: log2, \u8BF7\u6C42id });
|
|
631
|
+
await log2.debug("\u63A5\u53E3\u5B9E\u73B0\u6267\u884C\u5B8C\u6BD5");
|
|
629
632
|
let \u63A5\u53E3\u8017\u65F6 = Date.now() - \u5F00\u59CB;
|
|
630
|
-
await
|
|
633
|
+
await log2.info("\u63A5\u53E3\u903B\u8F91\u6267\u884C\u5B8C\u6BD5, \u8017\u65F6: %o ms", \u63A5\u53E3\u8017\u65F6);
|
|
631
634
|
\u5F00\u59CB = Date.now();
|
|
632
635
|
let \u8F6C\u6362\u7ED3\u679C = \u7ED3\u679C\u8F6C\u6362\u5668.\u5B9E\u73B0(\u63A5\u53E3\u7ED3\u679C);
|
|
633
636
|
let \u9519\u8BEF\u7ED3\u679C = \u76EE\u6807\u63A5\u53E3.\u83B7\u5F97\u63A5\u53E3\u9519\u8BEF\u5F62\u5F0FZod().safeParse(\u8F6C\u6362\u7ED3\u679C);
|
|
@@ -639,59 +642,59 @@ var \u670D\u52A1\u5668 = class {
|
|
|
639
642
|
\u6700\u7EC8\u7ED3\u679C = \u6B63\u786E\u7ED3\u679C.data;
|
|
640
643
|
} else {
|
|
641
644
|
let \u7ED3\u679C\u5B57\u7B26\u4E32 = JSON.stringify(\u9012\u5F52\u622A\u65AD\u5B57\u7B26\u4E32(\u8F6C\u6362\u7ED3\u679C));
|
|
642
|
-
await
|
|
643
|
-
await
|
|
644
|
-
await
|
|
645
|
+
await log2.error(`\u8F6C\u6362\u7ED3\u679C\u65E0\u6CD5\u901A\u8FC7\u6821\u9A8C: ${\u7ED3\u679C\u5B57\u7B26\u4E32}`);
|
|
646
|
+
await log2.error("\u5BF9\u4E8E\u9519\u8BEF\u7ED3\u679C: %o", \u9519\u8BEF\u7ED3\u679C.error);
|
|
647
|
+
await log2.error("\u5BF9\u4E8E\u6B63\u786E\u7ED3\u679C: %o", \u6B63\u786E\u7ED3\u679C.error);
|
|
645
648
|
throw new Error(`\u8F6C\u6362\u7ED3\u679C\u65E0\u6CD5\u901A\u8FC7\u6821\u9A8C`);
|
|
646
649
|
}
|
|
647
650
|
let \u8F6C\u6362\u8017\u65F6 = Date.now() - \u5F00\u59CB;
|
|
648
|
-
await
|
|
649
|
-
await
|
|
651
|
+
await log2.info("\u7ED3\u679C\u8F6C\u6362\u4E0E\u6821\u9A8C\u5B8C\u6210, \u8017\u65F6: %o ms", \u8F6C\u6362\u8017\u65F6);
|
|
652
|
+
await log2.debug("\u6700\u7EC8\u7ED3\u679C: %o", JSON.stringify(\u9012\u5F52\u622A\u65AD\u5B57\u7B26\u4E32(\u6700\u7EC8\u7ED3\u679C)));
|
|
650
653
|
\u5F00\u59CB = Date.now();
|
|
651
654
|
await \u7ED3\u679C\u8FD4\u56DE\u5668.\u8FD4\u56DE(req, res, \u6700\u7EC8\u7ED3\u679C);
|
|
652
655
|
let \u8FD4\u56DE\u8017\u65F6 = Date.now() - \u5F00\u59CB;
|
|
653
|
-
await
|
|
656
|
+
await log2.info("\u8FD4\u56DE\u903B\u8F91\u6267\u884C\u5B8C\u6BD5, \u8017\u65F6: %o ms", \u8FD4\u56DE\u8017\u65F6);
|
|
654
657
|
let \u603B\u8017\u65F6 = Date.now() - \u603B\u5F00\u59CB;
|
|
655
|
-
await
|
|
658
|
+
await log2.info("\u63A5\u53E3\u5B8C\u6574\u6267\u884C\u8017\u65F6: %o ms", \u603B\u8017\u65F6);
|
|
656
659
|
}
|
|
657
660
|
async \u521D\u59CB\u5316WebSocket(server) {
|
|
661
|
+
let log2 = await this.log;
|
|
658
662
|
let wss = new import_ws3.WebSocketServer({ server });
|
|
659
|
-
let \u7CFB\u7EDFlog = await this.\u7CFB\u7EDFlog;
|
|
660
663
|
wss.on("listening", async () => {
|
|
661
|
-
await
|
|
664
|
+
await log2.info("WebSocket \u670D\u52A1\u5668\u5DF2\u542F\u52A8\u5E76\u76D1\u542C");
|
|
662
665
|
});
|
|
663
666
|
wss.on("error", async (err) => {
|
|
664
|
-
await
|
|
667
|
+
await log2.error("WebSocket \u670D\u52A1\u5668\u53D1\u751F\u9519\u8BEF: %o", err);
|
|
665
668
|
});
|
|
666
669
|
wss.on("connection", async (ws, req) => {
|
|
667
|
-
let \
|
|
668
|
-
await \
|
|
670
|
+
let \u8FDE\u63A5log = log2.extend((0, import_short_uuid.default)().new());
|
|
671
|
+
await \u8FDE\u63A5log.debug("\u6536\u5230 WebSocket \u8FDE\u63A5\u8BF7\u6C42: %o", req.url);
|
|
669
672
|
let \u5BA2\u6237\u7AEFid = req.url?.split("?id=")[1] ?? null;
|
|
670
673
|
if (\u5BA2\u6237\u7AEFid === null) {
|
|
671
|
-
await \
|
|
672
|
-
return this.\u5173\u95EDWebSocket\u8FDE\u63A5(ws, \
|
|
674
|
+
await \u8FDE\u63A5log.error("\u8FDE\u63A5\u8BF7\u6C42\u7F3A\u5C11\u5BA2\u6237\u7AEF ID");
|
|
675
|
+
return this.\u5173\u95EDWebSocket\u8FDE\u63A5(ws, \u8FDE\u63A5log, 4001, "\u7F3A\u5C11\u5BA2\u6237\u7AEF ID");
|
|
673
676
|
}
|
|
674
|
-
await \
|
|
677
|
+
await \u8FDE\u63A5log.debug("\u89E3\u6790\u5BA2\u6237\u7AEF ID: %s", \u5BA2\u6237\u7AEFid);
|
|
675
678
|
let WebSocket\u7BA1\u7406\u56682 = Global.getItemSync("WebSocket\u7BA1\u7406\u5668");
|
|
676
679
|
let \u8FDE\u63A5\u5DF2\u5B58\u5728 = WebSocket\u7BA1\u7406\u56682.\u67E5\u8BE2\u8FDE\u63A5\u5B58\u5728(\u5BA2\u6237\u7AEFid);
|
|
677
680
|
if (\u8FDE\u63A5\u5DF2\u5B58\u5728) {
|
|
678
|
-
await \
|
|
679
|
-
return this.\u5173\u95EDWebSocket\u8FDE\u63A5(ws, \
|
|
681
|
+
await \u8FDE\u63A5log.error("\u5BA2\u6237\u7AEF ID \u5DF2\u5B58\u5728: %s", \u5BA2\u6237\u7AEFid);
|
|
682
|
+
return this.\u5173\u95EDWebSocket\u8FDE\u63A5(ws, \u8FDE\u63A5log, 4002, "\u5BA2\u6237\u7AEF ID \u5DF2\u5B58\u5728");
|
|
680
683
|
}
|
|
681
684
|
WebSocket\u7BA1\u7406\u56682.\u589E\u52A0\u8FDE\u63A5(\u5BA2\u6237\u7AEFid, ws);
|
|
682
|
-
await \
|
|
685
|
+
await \u8FDE\u63A5log.info("WebSocket \u8FDE\u63A5\u5DF2\u5EFA\u7ACB, \u5BA2\u6237\u7AEF ID: %s", \u5BA2\u6237\u7AEFid);
|
|
683
686
|
ws.on("close", async () => {
|
|
684
|
-
await \
|
|
687
|
+
await \u8FDE\u63A5log.info("WebSocket \u8FDE\u63A5\u5173\u95ED: %s", \u5BA2\u6237\u7AEFid);
|
|
685
688
|
WebSocket\u7BA1\u7406\u56682.\u5220\u9664\u8FDE\u63A5(\u5BA2\u6237\u7AEFid);
|
|
686
689
|
});
|
|
687
690
|
ws.on("error", async (err) => {
|
|
688
|
-
await \
|
|
691
|
+
await \u8FDE\u63A5log.error("WebSocket \u51FA\u73B0\u9519\u8BEF, \u5BA2\u6237\u7AEF ID: %s, \u9519\u8BEF: %o", \u5BA2\u6237\u7AEFid, err);
|
|
689
692
|
WebSocket\u7BA1\u7406\u56682.\u5220\u9664\u8FDE\u63A5(\u5BA2\u6237\u7AEFid);
|
|
690
693
|
});
|
|
691
694
|
});
|
|
692
695
|
}
|
|
693
|
-
async \u5173\u95EDWebSocket\u8FDE\u63A5(ws,
|
|
694
|
-
await
|
|
696
|
+
async \u5173\u95EDWebSocket\u8FDE\u63A5(ws, log2, code, reason) {
|
|
697
|
+
await log2.debug(`\u5173\u95ED WebSocket \u8FDE\u63A5, \u4EE3\u7801: ${code}, \u539F\u56E0: ${reason}`);
|
|
695
698
|
ws.close(code, reason);
|
|
696
699
|
}
|
|
697
700
|
\u83B7\u53D6\u672C\u5730\u5730\u5740() {
|
package/dist/cjs/index.d.cts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
export { 严格递归合并对象, 普通对象深合并, 构造元组, 构造对象 } from './help/help.cjs';
|
|
2
|
-
export { 任 as 任意接口, x as 任意接口结果转换器, n as 任意接口逻辑, y as 任意插件, 兼 as 兼容空对象, A as 取插件内部ts类型, 取 as 取插件内部类型, 可 as 可调用接口逻辑, 合 as 合并插件结果, 常 as 常用形式转换器, b as 接口, a as 接口方法类型, w as 接口结果转换器, 接 as 接口路径类型, m as 接口逻辑, l as 接口逻辑Base, j as 接口逻辑正确类型, i as 接口逻辑错误类型, k as 接口逻辑附加参数类型, 插 as 插件, z as 插件项类型, 服 as 服务器, 清 as 清理函数类型, 直 as 直接形式转换器, 空 as 空对象, c as 获得接口方法类型, f as 获得接口正确形式, g as 获得接口结果转换器类型, h as 获得接口结果返回器类型, 获 as 获得接口路径类型, s as 获得接口逻辑上游接口类型, o as 获得接口逻辑插件类型, t as 获得接口逻辑最后接口类型, r as 获得接口逻辑正确类型, d as 获得接口逻辑类型, q as 获得接口逻辑错误类型, p as 获得接口逻辑附加参数类型, e as 获得接口错误形式, 计 as 计算接口逻辑参数, v as 计算接口逻辑正确结果, u as 计算接口逻辑错误结果, 请 as 请求附加参数类型 } from './interface-base-
|
|
2
|
+
export { 任 as 任意接口, x as 任意接口结果转换器, n as 任意接口逻辑, y as 任意插件, 兼 as 兼容空对象, A as 取插件内部ts类型, 取 as 取插件内部类型, 可 as 可调用接口逻辑, 合 as 合并插件结果, 常 as 常用形式转换器, b as 接口, a as 接口方法类型, w as 接口结果转换器, 接 as 接口路径类型, m as 接口逻辑, l as 接口逻辑Base, j as 接口逻辑正确类型, i as 接口逻辑错误类型, k as 接口逻辑附加参数类型, 插 as 插件, z as 插件项类型, 日 as 日志回调类型, 服 as 服务器, 清 as 清理函数类型, 直 as 直接形式转换器, 空 as 空对象, c as 获得接口方法类型, f as 获得接口正确形式, g as 获得接口结果转换器类型, h as 获得接口结果返回器类型, 获 as 获得接口路径类型, s as 获得接口逻辑上游接口类型, o as 获得接口逻辑插件类型, t as 获得接口逻辑最后接口类型, r as 获得接口逻辑正确类型, d as 获得接口逻辑类型, q as 获得接口逻辑错误类型, p as 获得接口逻辑附加参数类型, e as 获得接口错误形式, 计 as 计算接口逻辑参数, v as 计算接口逻辑正确结果, u as 计算接口逻辑错误结果, 请 as 请求附加参数类型 } from './interface-base-gRngpxki.cjs';
|
|
3
3
|
export { 任意接口结果返回器, 常用返回器, 接口结果返回器, 自定义返回器 } from './interface/interface-retuen.cjs';
|
|
4
4
|
export { 接口测试 } from './interface/interface-test.cjs';
|
|
5
5
|
export { 自定义数据插件 } from './plugin/extend/custom-data.cjs';
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import 'zod';
|
|
2
|
-
export { 任 as 任意接口, b as 接口, a as 接口方法类型, 接 as 接口路径类型, c as 获得接口方法类型, f as 获得接口正确形式, g as 获得接口结果转换器类型, h as 获得接口结果返回器类型, 获 as 获得接口路径类型, d as 获得接口逻辑类型, e as 获得接口错误形式 } from '../interface-base-
|
|
2
|
+
export { 任 as 任意接口, b as 接口, a as 接口方法类型, 接 as 接口路径类型, c as 获得接口方法类型, f as 获得接口正确形式, g as 获得接口结果转换器类型, h as 获得接口结果返回器类型, 获 as 获得接口路径类型, d as 获得接口逻辑类型, e as 获得接口错误形式 } from '../interface-base-gRngpxki.cjs';
|
|
3
3
|
import './interface-retuen.cjs';
|
|
4
4
|
import '@lsby/ts-fp-data';
|
|
5
5
|
import 'express';
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import '@lsby/ts-fp-data';
|
|
2
2
|
import 'express';
|
|
3
3
|
import '../help/interior.cjs';
|
|
4
|
-
export { n as 任意接口逻辑, 兼 as 兼容空对象, 可 as 可调用接口逻辑, m as 接口逻辑, l as 接口逻辑Base, j as 接口逻辑正确类型, i as 接口逻辑错误类型, k as 接口逻辑附加参数类型, 清 as 清理函数类型, 空 as 空对象, s as 获得接口逻辑上游接口类型, o as 获得接口逻辑插件类型, t as 获得接口逻辑最后接口类型, r as 获得接口逻辑正确类型, q as 获得接口逻辑错误类型, p as 获得接口逻辑附加参数类型, 计 as 计算接口逻辑参数, v as 计算接口逻辑正确结果, u as 计算接口逻辑错误结果 } from '../interface-base-
|
|
4
|
+
export { n as 任意接口逻辑, 兼 as 兼容空对象, 可 as 可调用接口逻辑, m as 接口逻辑, l as 接口逻辑Base, j as 接口逻辑正确类型, i as 接口逻辑错误类型, k as 接口逻辑附加参数类型, 清 as 清理函数类型, 空 as 空对象, s as 获得接口逻辑上游接口类型, o as 获得接口逻辑插件类型, t as 获得接口逻辑最后接口类型, r as 获得接口逻辑正确类型, q as 获得接口逻辑错误类型, p as 获得接口逻辑附加参数类型, 计 as 计算接口逻辑参数, v as 计算接口逻辑正确结果, u as 计算接口逻辑错误结果 } from '../interface-base-gRngpxki.cjs';
|
|
5
5
|
import 'zod';
|
|
6
6
|
import '@lsby/ts-log';
|
|
7
7
|
import 'node:http';
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import '@lsby/ts-fp-data';
|
|
2
|
-
export { x as 任意接口结果转换器, 常 as 常用形式转换器, w as 接口结果转换器, 直 as 直接形式转换器 } from '../interface-base-
|
|
2
|
+
export { x as 任意接口结果转换器, 常 as 常用形式转换器, w as 接口结果转换器, 直 as 直接形式转换器 } from '../interface-base-gRngpxki.cjs';
|
|
3
3
|
import 'zod';
|
|
4
4
|
import 'express';
|
|
5
5
|
import '../help/interior.cjs';
|
|
@@ -6,12 +6,14 @@ import { Log } from '@lsby/ts-log';
|
|
|
6
6
|
import * as http from 'node:http';
|
|
7
7
|
import { 接口结果返回器 as _______ } from './interface/interface-retuen.cjs';
|
|
8
8
|
|
|
9
|
+
type 日志回调类型 = (level: 'trace' | 'debug' | 'info' | 'warn' | 'error', namespace: string, content: string) => Promise<void>;
|
|
9
10
|
type 请求附加参数类型 = {
|
|
10
11
|
log: Log;
|
|
12
|
+
请求id: string;
|
|
11
13
|
};
|
|
12
14
|
declare class 服务器 {
|
|
13
|
-
private
|
|
14
|
-
private
|
|
15
|
+
private log;
|
|
16
|
+
private 日志回调?;
|
|
15
17
|
private 接口们;
|
|
16
18
|
private 端口;
|
|
17
19
|
private 静态资源路径;
|
|
@@ -21,8 +23,7 @@ declare class 服务器 {
|
|
|
21
23
|
端口: number;
|
|
22
24
|
静态资源路径?: string;
|
|
23
25
|
默认get文件路径?: string;
|
|
24
|
-
|
|
25
|
-
接口log?: Log;
|
|
26
|
+
日志回调?: 日志回调类型;
|
|
26
27
|
});
|
|
27
28
|
run(): Promise<{
|
|
28
29
|
ip: string[];
|
|
@@ -231,4 +232,4 @@ type 获得接口正确形式<A> = A extends 接口<any, any, any, any, infer X,
|
|
|
231
232
|
type 获得接口结果转换器类型<A> = A extends 接口<any, any, any, any, any, infer X, any> ? X : never;
|
|
232
233
|
type 获得接口结果返回器类型<A> = A extends 接口<any, any, any, any, any, any, infer X> ? X : never;
|
|
233
234
|
|
|
234
|
-
export { type 取插件内部ts类型 as A, type 接口方法类型 as a, 接口 as b, type 获得接口方法类型 as c, type 获得接口逻辑类型 as d, type 获得接口错误形式 as e, type 获得接口正确形式 as f, type 获得接口结果转换器类型 as g, type 获得接口结果返回器类型 as h, type 接口逻辑错误类型 as i, type 接口逻辑正确类型 as j, type 接口逻辑附加参数类型 as k, 接口逻辑Base as l, 接口逻辑 as m, type 任意接口逻辑 as n, type 获得接口逻辑插件类型 as o, type 获得接口逻辑附加参数类型 as p, type 获得接口逻辑错误类型 as q, type 获得接口逻辑正确类型 as r, type 获得接口逻辑上游接口类型 as s, type 获得接口逻辑最后接口类型 as t, type 计算接口逻辑错误结果 as u, type 计算接口逻辑正确结果 as v, 接口结果转换器 as w, type 任意接口结果转换器 as x, type 任意插件 as y, type 插件项类型 as z, type 任意接口 as 任, type 兼容空对象 as 兼, type 取插件内部类型 as 取, type 可调用接口逻辑 as 可, type 合并插件结果 as 合, 常用形式转换器 as 常, type 接口路径类型 as 接, 插件 as 插, 服务器 as 服, type 清理函数类型 as 清, 直接形式转换器 as 直, type 空对象 as 空, type 获得接口路径类型 as 获, type 计算接口逻辑参数 as 计, type 请求附加参数类型 as 请 };
|
|
235
|
+
export { type 取插件内部ts类型 as A, type 接口方法类型 as a, 接口 as b, type 获得接口方法类型 as c, type 获得接口逻辑类型 as d, type 获得接口错误形式 as e, type 获得接口正确形式 as f, type 获得接口结果转换器类型 as g, type 获得接口结果返回器类型 as h, type 接口逻辑错误类型 as i, type 接口逻辑正确类型 as j, type 接口逻辑附加参数类型 as k, 接口逻辑Base as l, 接口逻辑 as m, type 任意接口逻辑 as n, type 获得接口逻辑插件类型 as o, type 获得接口逻辑附加参数类型 as p, type 获得接口逻辑错误类型 as q, type 获得接口逻辑正确类型 as r, type 获得接口逻辑上游接口类型 as s, type 获得接口逻辑最后接口类型 as t, type 计算接口逻辑错误结果 as u, type 计算接口逻辑正确结果 as v, 接口结果转换器 as w, type 任意接口结果转换器 as x, type 任意插件 as y, type 插件项类型 as z, type 任意接口 as 任, type 兼容空对象 as 兼, type 取插件内部类型 as 取, type 可调用接口逻辑 as 可, type 合并插件结果 as 合, 常用形式转换器 as 常, type 接口路径类型 as 接, 插件 as 插, type 日志回调类型 as 日, 服务器 as 服, type 清理函数类型 as 清, 直接形式转换器 as 直, type 空对象 as 空, type 获得接口路径类型 as 获, type 计算接口逻辑参数 as 计, type 请求附加参数类型 as 请 };
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import express from 'express';
|
|
2
2
|
import { AnyZodObject, z } from 'zod';
|
|
3
3
|
import { 严格递归合并对象 as ________ } from '../../help/help.cjs';
|
|
4
|
-
import { 插 as __, z as _____, 取 as _______, o as __________ } from '../../interface-base-
|
|
4
|
+
import { 插 as __, z as _____, 取 as _______, o as __________ } from '../../interface-base-gRngpxki.cjs';
|
|
5
5
|
import '@lsby/ts-fp-data';
|
|
6
6
|
import '../../help/interior.cjs';
|
|
7
7
|
import '@lsby/ts-log';
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { AnyZodObject, z } from 'zod';
|
|
2
2
|
import { 严格递归合并对象 as ________ } from '../../help/help.cjs';
|
|
3
|
-
import { 插 as __, z as _____, 取 as _______, o as __________ } from '../../interface-base-
|
|
3
|
+
import { 插 as __, z as _____, 取 as _______, o as __________ } from '../../interface-base-gRngpxki.cjs';
|
|
4
4
|
import '@lsby/ts-fp-data';
|
|
5
5
|
import 'express';
|
|
6
6
|
import '../../help/interior.cjs';
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import express from 'express';
|
|
2
2
|
import { z } from 'zod';
|
|
3
|
-
import { 插 as __ } from '../../interface-base-
|
|
3
|
+
import { 插 as __ } from '../../interface-base-gRngpxki.cjs';
|
|
4
4
|
import '@lsby/ts-fp-data';
|
|
5
5
|
import '../../help/interior.cjs';
|
|
6
6
|
import '@lsby/ts-log';
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import 'express';
|
|
2
2
|
import 'zod';
|
|
3
|
-
export { y as 任意插件, A as 取插件内部ts类型, 取 as 取插件内部类型, 合 as 合并插件结果, 插 as 插件, z as 插件项类型 } from '../interface-base-
|
|
3
|
+
export { y as 任意插件, A as 取插件内部ts类型, 取 as 取插件内部类型, 合 as 合并插件结果, 插 as 插件, z as 插件项类型 } from '../interface-base-gRngpxki.cjs';
|
|
4
4
|
import '@lsby/ts-fp-data';
|
|
5
5
|
import '../help/interior.cjs';
|
|
6
6
|
import '@lsby/ts-log';
|
|
@@ -122,8 +122,8 @@ function \u9012\u5F52\u622A\u65AD\u5B57\u7B26\u4E32(\u6570\u636E) {
|
|
|
122
122
|
|
|
123
123
|
// src/server/server.ts
|
|
124
124
|
var \u670D\u52A1\u5668 = class {
|
|
125
|
-
|
|
126
|
-
\
|
|
125
|
+
log;
|
|
126
|
+
\u65E5\u5FD7\u56DE\u8C03;
|
|
127
127
|
\u63A5\u53E3\u4EEC;
|
|
128
128
|
\u7AEF\u53E3;
|
|
129
129
|
\u9759\u6001\u8D44\u6E90\u8DEF\u5F84;
|
|
@@ -133,14 +133,17 @@ var \u670D\u52A1\u5668 = class {
|
|
|
133
133
|
this.\u7AEF\u53E3 = options.\u7AEF\u53E3;
|
|
134
134
|
this.\u9759\u6001\u8D44\u6E90\u8DEF\u5F84 = options.\u9759\u6001\u8D44\u6E90\u8DEF\u5F84;
|
|
135
135
|
this.\u9ED8\u8BA4get\u6587\u4EF6\u8DEF\u5F84 = options.\u9ED8\u8BA4get\u6587\u4EF6\u8DEF\u5F84;
|
|
136
|
-
this.\
|
|
137
|
-
this
|
|
136
|
+
this.\u65E5\u5FD7\u56DE\u8C03 = options.\u65E5\u5FD7\u56DE\u8C03;
|
|
137
|
+
this.log = Global.getItem("log").then((a) => {
|
|
138
|
+
if (this.\u65E5\u5FD7\u56DE\u8C03 !== void 0) a.pipe(this.\u65E5\u5FD7\u56DE\u8C03);
|
|
139
|
+
return a;
|
|
140
|
+
});
|
|
138
141
|
}
|
|
139
142
|
async run() {
|
|
143
|
+
let log2 = await this.log;
|
|
140
144
|
let app = (0, import_express.default)();
|
|
141
|
-
let \u7CFB\u7EDFlog = await this.\u7CFB\u7EDFlog;
|
|
142
145
|
if (this.\u9759\u6001\u8D44\u6E90\u8DEF\u5F84 !== void 0) {
|
|
143
|
-
await
|
|
146
|
+
await log2.debug(`\u8BBE\u7F6E\u9759\u6001\u8D44\u6E90\u8DEF\u5F84: ${this.\u9759\u6001\u8D44\u6E90\u8DEF\u5F84}`);
|
|
144
147
|
app.use(import_express.default.static(this.\u9759\u6001\u8D44\u6E90\u8DEF\u5F84));
|
|
145
148
|
}
|
|
146
149
|
app.use(this.\u5904\u7406\u8BF7\u6C42.bind(this));
|
|
@@ -150,17 +153,16 @@ var \u670D\u52A1\u5668 = class {
|
|
|
150
153
|
}
|
|
151
154
|
async \u5904\u7406\u8BF7\u6C42(req, res) {
|
|
152
155
|
let \u8BF7\u6C42id = (0, import_short_uuid.default)().new();
|
|
153
|
-
let
|
|
154
|
-
let \u63A5\u53E3log = (await this.\u63A5\u53E3log).extend(\u8BF7\u6C42id);
|
|
156
|
+
let log2 = (await this.log).extend(\u8BF7\u6C42id);
|
|
155
157
|
let \u5F00\u59CB\u65F6\u95F4 = Date.now();
|
|
156
158
|
try {
|
|
157
159
|
let { path: \u8BF7\u6C42\u8DEF\u5F84, method } = req;
|
|
158
160
|
\u8BF7\u6C42\u8DEF\u5F84 = decodeURIComponent(\u8BF7\u6C42\u8DEF\u5F84);
|
|
159
161
|
let \u8BF7\u6C42\u65B9\u6CD5 = method.toLowerCase();
|
|
160
|
-
await
|
|
162
|
+
await log2.debug("\u6536\u5230\u8BF7\u6C42, \u8DEF\u5F84: %o, \u65B9\u6CD5: %o", \u8BF7\u6C42\u8DEF\u5F84, \u8BF7\u6C42\u65B9\u6CD5);
|
|
161
163
|
let \u76EE\u6807\u63A5\u53E3 = this.\u63A5\u53E3\u4EEC.find((\u63A5\u53E3) => \u8BF7\u6C42\u65B9\u6CD5 === \u63A5\u53E3.\u83B7\u5F97\u65B9\u6CD5() && \u8BF7\u6C42\u8DEF\u5F84 === \u63A5\u53E3.\u83B7\u5F97\u8DEF\u5F84()) ?? null;
|
|
162
164
|
if (\u76EE\u6807\u63A5\u53E3 !== null) {
|
|
163
|
-
await this.\u5904\u7406\u63A5\u53E3\u903B\u8F91(req, res, \u76EE\u6807\u63A5\u53E3,
|
|
165
|
+
await this.\u5904\u7406\u63A5\u53E3\u903B\u8F91({ req, res, \u76EE\u6807\u63A5\u53E3, log: log2, \u8BF7\u6C42id });
|
|
164
166
|
return;
|
|
165
167
|
}
|
|
166
168
|
if (this.\u9ED8\u8BA4get\u6587\u4EF6\u8DEF\u5F84 !== void 0 && \u8BF7\u6C42\u65B9\u6CD5 === "get") {
|
|
@@ -169,35 +171,36 @@ var \u670D\u52A1\u5668 = class {
|
|
|
169
171
|
res.send(\u9ED8\u8BA4\u6587\u4EF6\u5185\u5BB9);
|
|
170
172
|
return;
|
|
171
173
|
} catch (e) {
|
|
172
|
-
await
|
|
174
|
+
await log2.error("\u8FD4\u56DE\u9ED8\u8BA4get\u6587\u4EF6\u5185\u5BB9\u5931\u8D25: %o", String(e));
|
|
173
175
|
}
|
|
174
176
|
}
|
|
175
|
-
await
|
|
177
|
+
await log2.debug("\u6CA1\u6709\u547D\u4E2D\u4EFB\u4F55\u8D44\u6E90");
|
|
176
178
|
res.status(404).end();
|
|
177
179
|
} catch (error) {
|
|
178
|
-
await
|
|
180
|
+
await log2.error(error);
|
|
179
181
|
res.status(500).send("\u670D\u52A1\u5668\u5185\u90E8\u9519\u8BEF");
|
|
180
182
|
} finally {
|
|
181
183
|
let \u8017\u65F6ms = Date.now() - \u5F00\u59CB\u65F6\u95F4;
|
|
182
|
-
await
|
|
184
|
+
await log2.info("\u8BF7\u6C42\u5B8C\u6210, \u8017\u65F6: %o ms", \u8017\u65F6ms);
|
|
183
185
|
}
|
|
184
186
|
}
|
|
185
|
-
async \u5904\u7406\u63A5\u53E3\u903B\u8F91(
|
|
187
|
+
async \u5904\u7406\u63A5\u53E3\u903B\u8F91(opt) {
|
|
188
|
+
let { req, res, \u76EE\u6807\u63A5\u53E3, log: log2, \u8BF7\u6C42id } = opt;
|
|
186
189
|
let \u63A5\u53E3\u903B\u8F91 = \u76EE\u6807\u63A5\u53E3.\u83B7\u5F97\u903B\u8F91();
|
|
187
190
|
let \u7ED3\u679C\u8F6C\u6362\u5668 = \u76EE\u6807\u63A5\u53E3.\u83B7\u5F97\u7ED3\u679C\u8F6C\u6362\u5668();
|
|
188
191
|
let \u7ED3\u679C\u8FD4\u56DE\u5668 = \u76EE\u6807\u63A5\u53E3.\u83B7\u5F97\u7ED3\u679C\u8FD4\u56DE\u5668();
|
|
189
192
|
let \u603B\u5F00\u59CB = Date.now();
|
|
190
193
|
let \u5F00\u59CB = Date.now();
|
|
191
|
-
await
|
|
194
|
+
await log2.debug("\u8C03\u7528\u63A5\u53E3\u903B\u8F91...");
|
|
192
195
|
let \u63D2\u4EF6\u4EEC = \u63A5\u53E3\u903B\u8F91.\u83B7\u5F97\u63D2\u4EF6\u4EEC();
|
|
193
|
-
await
|
|
194
|
-
let \u63D2\u4EF6\u7ED3\u679C = await \u63A5\u53E3\u903B\u8F91.\u8BA1\u7B97\u63D2\u4EF6\u7ED3\u679C(req, res, { log: \
|
|
195
|
-
await
|
|
196
|
-
await
|
|
197
|
-
let \u63A5\u53E3\u7ED3\u679C = await \u63A5\u53E3\u903B\u8F91.\u901A\u8FC7\u63D2\u4EF6\u7ED3\u679C\u8FD0\u884C(\u63D2\u4EF6\u7ED3\u679C, {}, { log: \
|
|
198
|
-
await
|
|
196
|
+
await log2.debug("\u627E\u5230 %o \u4E2A \u63D2\u4EF6, \u51C6\u5907\u6267\u884C...", \u63D2\u4EF6\u4EEC.length);
|
|
197
|
+
let \u63D2\u4EF6\u7ED3\u679C = await \u63A5\u53E3\u903B\u8F91.\u8BA1\u7B97\u63D2\u4EF6\u7ED3\u679C(req, res, { log: log2, \u8BF7\u6C42id });
|
|
198
|
+
await log2.debug("\u63D2\u4EF6 \u6267\u884C\u5B8C\u6BD5");
|
|
199
|
+
await log2.debug("\u51C6\u5907\u6267\u884C\u63A5\u53E3\u5B9E\u73B0...");
|
|
200
|
+
let \u63A5\u53E3\u7ED3\u679C = await \u63A5\u53E3\u903B\u8F91.\u901A\u8FC7\u63D2\u4EF6\u7ED3\u679C\u8FD0\u884C(\u63D2\u4EF6\u7ED3\u679C, {}, { log: log2, \u8BF7\u6C42id });
|
|
201
|
+
await log2.debug("\u63A5\u53E3\u5B9E\u73B0\u6267\u884C\u5B8C\u6BD5");
|
|
199
202
|
let \u63A5\u53E3\u8017\u65F6 = Date.now() - \u5F00\u59CB;
|
|
200
|
-
await
|
|
203
|
+
await log2.info("\u63A5\u53E3\u903B\u8F91\u6267\u884C\u5B8C\u6BD5, \u8017\u65F6: %o ms", \u63A5\u53E3\u8017\u65F6);
|
|
201
204
|
\u5F00\u59CB = Date.now();
|
|
202
205
|
let \u8F6C\u6362\u7ED3\u679C = \u7ED3\u679C\u8F6C\u6362\u5668.\u5B9E\u73B0(\u63A5\u53E3\u7ED3\u679C);
|
|
203
206
|
let \u9519\u8BEF\u7ED3\u679C = \u76EE\u6807\u63A5\u53E3.\u83B7\u5F97\u63A5\u53E3\u9519\u8BEF\u5F62\u5F0FZod().safeParse(\u8F6C\u6362\u7ED3\u679C);
|
|
@@ -209,59 +212,59 @@ var \u670D\u52A1\u5668 = class {
|
|
|
209
212
|
\u6700\u7EC8\u7ED3\u679C = \u6B63\u786E\u7ED3\u679C.data;
|
|
210
213
|
} else {
|
|
211
214
|
let \u7ED3\u679C\u5B57\u7B26\u4E32 = JSON.stringify(\u9012\u5F52\u622A\u65AD\u5B57\u7B26\u4E32(\u8F6C\u6362\u7ED3\u679C));
|
|
212
|
-
await
|
|
213
|
-
await
|
|
214
|
-
await
|
|
215
|
+
await log2.error(`\u8F6C\u6362\u7ED3\u679C\u65E0\u6CD5\u901A\u8FC7\u6821\u9A8C: ${\u7ED3\u679C\u5B57\u7B26\u4E32}`);
|
|
216
|
+
await log2.error("\u5BF9\u4E8E\u9519\u8BEF\u7ED3\u679C: %o", \u9519\u8BEF\u7ED3\u679C.error);
|
|
217
|
+
await log2.error("\u5BF9\u4E8E\u6B63\u786E\u7ED3\u679C: %o", \u6B63\u786E\u7ED3\u679C.error);
|
|
215
218
|
throw new Error(`\u8F6C\u6362\u7ED3\u679C\u65E0\u6CD5\u901A\u8FC7\u6821\u9A8C`);
|
|
216
219
|
}
|
|
217
220
|
let \u8F6C\u6362\u8017\u65F6 = Date.now() - \u5F00\u59CB;
|
|
218
|
-
await
|
|
219
|
-
await
|
|
221
|
+
await log2.info("\u7ED3\u679C\u8F6C\u6362\u4E0E\u6821\u9A8C\u5B8C\u6210, \u8017\u65F6: %o ms", \u8F6C\u6362\u8017\u65F6);
|
|
222
|
+
await log2.debug("\u6700\u7EC8\u7ED3\u679C: %o", JSON.stringify(\u9012\u5F52\u622A\u65AD\u5B57\u7B26\u4E32(\u6700\u7EC8\u7ED3\u679C)));
|
|
220
223
|
\u5F00\u59CB = Date.now();
|
|
221
224
|
await \u7ED3\u679C\u8FD4\u56DE\u5668.\u8FD4\u56DE(req, res, \u6700\u7EC8\u7ED3\u679C);
|
|
222
225
|
let \u8FD4\u56DE\u8017\u65F6 = Date.now() - \u5F00\u59CB;
|
|
223
|
-
await
|
|
226
|
+
await log2.info("\u8FD4\u56DE\u903B\u8F91\u6267\u884C\u5B8C\u6BD5, \u8017\u65F6: %o ms", \u8FD4\u56DE\u8017\u65F6);
|
|
224
227
|
let \u603B\u8017\u65F6 = Date.now() - \u603B\u5F00\u59CB;
|
|
225
|
-
await
|
|
228
|
+
await log2.info("\u63A5\u53E3\u5B8C\u6574\u6267\u884C\u8017\u65F6: %o ms", \u603B\u8017\u65F6);
|
|
226
229
|
}
|
|
227
230
|
async \u521D\u59CB\u5316WebSocket(server) {
|
|
231
|
+
let log2 = await this.log;
|
|
228
232
|
let wss = new import_ws2.WebSocketServer({ server });
|
|
229
|
-
let \u7CFB\u7EDFlog = await this.\u7CFB\u7EDFlog;
|
|
230
233
|
wss.on("listening", async () => {
|
|
231
|
-
await
|
|
234
|
+
await log2.info("WebSocket \u670D\u52A1\u5668\u5DF2\u542F\u52A8\u5E76\u76D1\u542C");
|
|
232
235
|
});
|
|
233
236
|
wss.on("error", async (err) => {
|
|
234
|
-
await
|
|
237
|
+
await log2.error("WebSocket \u670D\u52A1\u5668\u53D1\u751F\u9519\u8BEF: %o", err);
|
|
235
238
|
});
|
|
236
239
|
wss.on("connection", async (ws, req) => {
|
|
237
|
-
let \
|
|
238
|
-
await \
|
|
240
|
+
let \u8FDE\u63A5log = log2.extend((0, import_short_uuid.default)().new());
|
|
241
|
+
await \u8FDE\u63A5log.debug("\u6536\u5230 WebSocket \u8FDE\u63A5\u8BF7\u6C42: %o", req.url);
|
|
239
242
|
let \u5BA2\u6237\u7AEFid = req.url?.split("?id=")[1] ?? null;
|
|
240
243
|
if (\u5BA2\u6237\u7AEFid === null) {
|
|
241
|
-
await \
|
|
242
|
-
return this.\u5173\u95EDWebSocket\u8FDE\u63A5(ws, \
|
|
244
|
+
await \u8FDE\u63A5log.error("\u8FDE\u63A5\u8BF7\u6C42\u7F3A\u5C11\u5BA2\u6237\u7AEF ID");
|
|
245
|
+
return this.\u5173\u95EDWebSocket\u8FDE\u63A5(ws, \u8FDE\u63A5log, 4001, "\u7F3A\u5C11\u5BA2\u6237\u7AEF ID");
|
|
243
246
|
}
|
|
244
|
-
await \
|
|
247
|
+
await \u8FDE\u63A5log.debug("\u89E3\u6790\u5BA2\u6237\u7AEF ID: %s", \u5BA2\u6237\u7AEFid);
|
|
245
248
|
let WebSocket\u7BA1\u7406\u56682 = Global.getItemSync("WebSocket\u7BA1\u7406\u5668");
|
|
246
249
|
let \u8FDE\u63A5\u5DF2\u5B58\u5728 = WebSocket\u7BA1\u7406\u56682.\u67E5\u8BE2\u8FDE\u63A5\u5B58\u5728(\u5BA2\u6237\u7AEFid);
|
|
247
250
|
if (\u8FDE\u63A5\u5DF2\u5B58\u5728) {
|
|
248
|
-
await \
|
|
249
|
-
return this.\u5173\u95EDWebSocket\u8FDE\u63A5(ws, \
|
|
251
|
+
await \u8FDE\u63A5log.error("\u5BA2\u6237\u7AEF ID \u5DF2\u5B58\u5728: %s", \u5BA2\u6237\u7AEFid);
|
|
252
|
+
return this.\u5173\u95EDWebSocket\u8FDE\u63A5(ws, \u8FDE\u63A5log, 4002, "\u5BA2\u6237\u7AEF ID \u5DF2\u5B58\u5728");
|
|
250
253
|
}
|
|
251
254
|
WebSocket\u7BA1\u7406\u56682.\u589E\u52A0\u8FDE\u63A5(\u5BA2\u6237\u7AEFid, ws);
|
|
252
|
-
await \
|
|
255
|
+
await \u8FDE\u63A5log.info("WebSocket \u8FDE\u63A5\u5DF2\u5EFA\u7ACB, \u5BA2\u6237\u7AEF ID: %s", \u5BA2\u6237\u7AEFid);
|
|
253
256
|
ws.on("close", async () => {
|
|
254
|
-
await \
|
|
257
|
+
await \u8FDE\u63A5log.info("WebSocket \u8FDE\u63A5\u5173\u95ED: %s", \u5BA2\u6237\u7AEFid);
|
|
255
258
|
WebSocket\u7BA1\u7406\u56682.\u5220\u9664\u8FDE\u63A5(\u5BA2\u6237\u7AEFid);
|
|
256
259
|
});
|
|
257
260
|
ws.on("error", async (err) => {
|
|
258
|
-
await \
|
|
261
|
+
await \u8FDE\u63A5log.error("WebSocket \u51FA\u73B0\u9519\u8BEF, \u5BA2\u6237\u7AEF ID: %s, \u9519\u8BEF: %o", \u5BA2\u6237\u7AEFid, err);
|
|
259
262
|
WebSocket\u7BA1\u7406\u56682.\u5220\u9664\u8FDE\u63A5(\u5BA2\u6237\u7AEFid);
|
|
260
263
|
});
|
|
261
264
|
});
|
|
262
265
|
}
|
|
263
|
-
async \u5173\u95EDWebSocket\u8FDE\u63A5(ws,
|
|
264
|
-
await
|
|
266
|
+
async \u5173\u95EDWebSocket\u8FDE\u63A5(ws, log2, code, reason) {
|
|
267
|
+
await log2.debug(`\u5173\u95ED WebSocket \u8FDE\u63A5, \u4EE3\u7801: ${code}, \u539F\u56E0: ${reason}`);
|
|
265
268
|
ws.close(code, reason);
|
|
266
269
|
}
|
|
267
270
|
\u83B7\u53D6\u672C\u5730\u5730\u5740() {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import '@lsby/ts-log';
|
|
2
2
|
import 'node:http';
|
|
3
|
-
export { 服 as 服务器, 请 as 请求附加参数类型 } from '../interface-base-
|
|
3
|
+
export { 日 as 日志回调类型, 服 as 服务器, 请 as 请求附加参数类型 } from '../interface-base-gRngpxki.cjs';
|
|
4
4
|
import 'zod';
|
|
5
5
|
import '@lsby/ts-fp-data';
|
|
6
6
|
import 'express';
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { Request, Response } from 'express';
|
|
2
2
|
import { z } from 'zod';
|
|
3
|
-
import { 接 as ______, a as ______$1, l as ____Base, 空 as ___, b as __, 常 as _______, q as __________, r as __________$1 } from '../interface-base-
|
|
3
|
+
import { 接 as ______, a as ______$1, l as ____Base, 空 as ___, b as __, 常 as _______, q as __________, r as __________$1 } from '../interface-base-gRngpxki.cjs';
|
|
4
4
|
import { 自定义返回器 as ______$2 } from '../interface/interface-retuen.cjs';
|
|
5
5
|
import '@lsby/ts-fp-data';
|
|
6
6
|
import '../help/interior.cjs';
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
|
-
import { 接 as ______, a as ______$1, l as ____Base, 空 as ___, b as __, 常 as _______, q as __________, r as __________$1 } from '../interface-base-
|
|
2
|
+
import { 接 as ______, a as ______$1, l as ____Base, 空 as ___, b as __, 常 as _______, q as __________, r as __________$1 } from '../interface-base-gRngpxki.cjs';
|
|
3
3
|
import { 常用返回器 as _____ } from '../interface/interface-retuen.cjs';
|
|
4
4
|
import '@lsby/ts-fp-data';
|
|
5
5
|
import 'express';
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
|
-
import { 接 as ______, a as ______$1, l as ____Base, 空 as ___, b as __, 直 as _______, q as __________, r as __________$1 } from '../interface-base-
|
|
2
|
+
import { 接 as ______, a as ______$1, l as ____Base, 空 as ___, b as __, 直 as _______, q as __________, r as __________$1 } from '../interface-base-gRngpxki.cjs';
|
|
3
3
|
import { 常用返回器 as _____ } from '../interface/interface-retuen.cjs';
|
|
4
4
|
import '@lsby/ts-fp-data';
|
|
5
5
|
import 'express';
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { Request, Response } from 'express';
|
|
2
2
|
import { z } from 'zod';
|
|
3
|
-
import { b as __, 接 as ______, a as ______$1, l as ____Base, 空 as ___, w as _______ } from '../interface-base-
|
|
3
|
+
import { b as __, 接 as ______, a as ______$1, l as ____Base, 空 as ___, w as _______ } from '../interface-base-gRngpxki.cjs';
|
|
4
4
|
import { 接口结果返回器 as _______$1 } from '../interface/interface-retuen.cjs';
|
|
5
5
|
import '@lsby/ts-fp-data';
|
|
6
6
|
import '../help/interior.cjs';
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { Request, Response } from 'express';
|
|
2
2
|
import { ReadStream } from 'node:fs';
|
|
3
3
|
import { z } from 'zod';
|
|
4
|
-
import { 接 as ______, a as ______$1, l as ____Base, 空 as ___, b as __, 直 as _______, q as __________, r as __________$1 } from '../interface-base-
|
|
4
|
+
import { 接 as ______, a as ______$1, l as ____Base, 空 as ___, b as __, 直 as _______, q as __________, r as __________$1 } from '../interface-base-gRngpxki.cjs';
|
|
5
5
|
import { 接口结果返回器 as _______$1 } from '../interface/interface-retuen.cjs';
|
|
6
6
|
import '@lsby/ts-fp-data';
|
|
7
7
|
import '../help/interior.cjs';
|
|
@@ -12,8 +12,8 @@ import { networkInterfaces } from "os";
|
|
|
12
12
|
import short from "short-uuid";
|
|
13
13
|
import { WebSocketServer } from "ws";
|
|
14
14
|
var \u670D\u52A1\u5668 = class {
|
|
15
|
-
|
|
16
|
-
\
|
|
15
|
+
log;
|
|
16
|
+
\u65E5\u5FD7\u56DE\u8C03;
|
|
17
17
|
\u63A5\u53E3\u4EEC;
|
|
18
18
|
\u7AEF\u53E3;
|
|
19
19
|
\u9759\u6001\u8D44\u6E90\u8DEF\u5F84;
|
|
@@ -23,14 +23,17 @@ var \u670D\u52A1\u5668 = class {
|
|
|
23
23
|
this.\u7AEF\u53E3 = options.\u7AEF\u53E3;
|
|
24
24
|
this.\u9759\u6001\u8D44\u6E90\u8DEF\u5F84 = options.\u9759\u6001\u8D44\u6E90\u8DEF\u5F84;
|
|
25
25
|
this.\u9ED8\u8BA4get\u6587\u4EF6\u8DEF\u5F84 = options.\u9ED8\u8BA4get\u6587\u4EF6\u8DEF\u5F84;
|
|
26
|
-
this.\
|
|
27
|
-
this
|
|
26
|
+
this.\u65E5\u5FD7\u56DE\u8C03 = options.\u65E5\u5FD7\u56DE\u8C03;
|
|
27
|
+
this.log = Global.getItem("log").then((a) => {
|
|
28
|
+
if (this.\u65E5\u5FD7\u56DE\u8C03 !== void 0) a.pipe(this.\u65E5\u5FD7\u56DE\u8C03);
|
|
29
|
+
return a;
|
|
30
|
+
});
|
|
28
31
|
}
|
|
29
32
|
async run() {
|
|
33
|
+
let log = await this.log;
|
|
30
34
|
let app = express();
|
|
31
|
-
let \u7CFB\u7EDFlog = await this.\u7CFB\u7EDFlog;
|
|
32
35
|
if (this.\u9759\u6001\u8D44\u6E90\u8DEF\u5F84 !== void 0) {
|
|
33
|
-
await
|
|
36
|
+
await log.debug(`\u8BBE\u7F6E\u9759\u6001\u8D44\u6E90\u8DEF\u5F84: ${this.\u9759\u6001\u8D44\u6E90\u8DEF\u5F84}`);
|
|
34
37
|
app.use(express.static(this.\u9759\u6001\u8D44\u6E90\u8DEF\u5F84));
|
|
35
38
|
}
|
|
36
39
|
app.use(this.\u5904\u7406\u8BF7\u6C42.bind(this));
|
|
@@ -40,17 +43,16 @@ var \u670D\u52A1\u5668 = class {
|
|
|
40
43
|
}
|
|
41
44
|
async \u5904\u7406\u8BF7\u6C42(req, res) {
|
|
42
45
|
let \u8BF7\u6C42id = short().new();
|
|
43
|
-
let
|
|
44
|
-
let \u63A5\u53E3log = (await this.\u63A5\u53E3log).extend(\u8BF7\u6C42id);
|
|
46
|
+
let log = (await this.log).extend(\u8BF7\u6C42id);
|
|
45
47
|
let \u5F00\u59CB\u65F6\u95F4 = Date.now();
|
|
46
48
|
try {
|
|
47
49
|
let { path: \u8BF7\u6C42\u8DEF\u5F84, method } = req;
|
|
48
50
|
\u8BF7\u6C42\u8DEF\u5F84 = decodeURIComponent(\u8BF7\u6C42\u8DEF\u5F84);
|
|
49
51
|
let \u8BF7\u6C42\u65B9\u6CD5 = method.toLowerCase();
|
|
50
|
-
await
|
|
52
|
+
await log.debug("\u6536\u5230\u8BF7\u6C42, \u8DEF\u5F84: %o, \u65B9\u6CD5: %o", \u8BF7\u6C42\u8DEF\u5F84, \u8BF7\u6C42\u65B9\u6CD5);
|
|
51
53
|
let \u76EE\u6807\u63A5\u53E3 = this.\u63A5\u53E3\u4EEC.find((\u63A5\u53E3) => \u8BF7\u6C42\u65B9\u6CD5 === \u63A5\u53E3.\u83B7\u5F97\u65B9\u6CD5() && \u8BF7\u6C42\u8DEF\u5F84 === \u63A5\u53E3.\u83B7\u5F97\u8DEF\u5F84()) ?? null;
|
|
52
54
|
if (\u76EE\u6807\u63A5\u53E3 !== null) {
|
|
53
|
-
await this.\u5904\u7406\u63A5\u53E3\u903B\u8F91(req, res, \u76EE\u6807\u63A5\u53E3,
|
|
55
|
+
await this.\u5904\u7406\u63A5\u53E3\u903B\u8F91({ req, res, \u76EE\u6807\u63A5\u53E3, log, \u8BF7\u6C42id });
|
|
54
56
|
return;
|
|
55
57
|
}
|
|
56
58
|
if (this.\u9ED8\u8BA4get\u6587\u4EF6\u8DEF\u5F84 !== void 0 && \u8BF7\u6C42\u65B9\u6CD5 === "get") {
|
|
@@ -59,35 +61,36 @@ var \u670D\u52A1\u5668 = class {
|
|
|
59
61
|
res.send(\u9ED8\u8BA4\u6587\u4EF6\u5185\u5BB9);
|
|
60
62
|
return;
|
|
61
63
|
} catch (e) {
|
|
62
|
-
await
|
|
64
|
+
await log.error("\u8FD4\u56DE\u9ED8\u8BA4get\u6587\u4EF6\u5185\u5BB9\u5931\u8D25: %o", String(e));
|
|
63
65
|
}
|
|
64
66
|
}
|
|
65
|
-
await
|
|
67
|
+
await log.debug("\u6CA1\u6709\u547D\u4E2D\u4EFB\u4F55\u8D44\u6E90");
|
|
66
68
|
res.status(404).end();
|
|
67
69
|
} catch (error) {
|
|
68
|
-
await
|
|
70
|
+
await log.error(error);
|
|
69
71
|
res.status(500).send("\u670D\u52A1\u5668\u5185\u90E8\u9519\u8BEF");
|
|
70
72
|
} finally {
|
|
71
73
|
let \u8017\u65F6ms = Date.now() - \u5F00\u59CB\u65F6\u95F4;
|
|
72
|
-
await
|
|
74
|
+
await log.info("\u8BF7\u6C42\u5B8C\u6210, \u8017\u65F6: %o ms", \u8017\u65F6ms);
|
|
73
75
|
}
|
|
74
76
|
}
|
|
75
|
-
async \u5904\u7406\u63A5\u53E3\u903B\u8F91(
|
|
77
|
+
async \u5904\u7406\u63A5\u53E3\u903B\u8F91(opt) {
|
|
78
|
+
let { req, res, \u76EE\u6807\u63A5\u53E3, log, \u8BF7\u6C42id } = opt;
|
|
76
79
|
let \u63A5\u53E3\u903B\u8F91 = \u76EE\u6807\u63A5\u53E3.\u83B7\u5F97\u903B\u8F91();
|
|
77
80
|
let \u7ED3\u679C\u8F6C\u6362\u5668 = \u76EE\u6807\u63A5\u53E3.\u83B7\u5F97\u7ED3\u679C\u8F6C\u6362\u5668();
|
|
78
81
|
let \u7ED3\u679C\u8FD4\u56DE\u5668 = \u76EE\u6807\u63A5\u53E3.\u83B7\u5F97\u7ED3\u679C\u8FD4\u56DE\u5668();
|
|
79
82
|
let \u603B\u5F00\u59CB = Date.now();
|
|
80
83
|
let \u5F00\u59CB = Date.now();
|
|
81
|
-
await
|
|
84
|
+
await log.debug("\u8C03\u7528\u63A5\u53E3\u903B\u8F91...");
|
|
82
85
|
let \u63D2\u4EF6\u4EEC = \u63A5\u53E3\u903B\u8F91.\u83B7\u5F97\u63D2\u4EF6\u4EEC();
|
|
83
|
-
await
|
|
84
|
-
let \u63D2\u4EF6\u7ED3\u679C = await \u63A5\u53E3\u903B\u8F91.\u8BA1\u7B97\u63D2\u4EF6\u7ED3\u679C(req, res, { log
|
|
85
|
-
await
|
|
86
|
-
await
|
|
87
|
-
let \u63A5\u53E3\u7ED3\u679C = await \u63A5\u53E3\u903B\u8F91.\u901A\u8FC7\u63D2\u4EF6\u7ED3\u679C\u8FD0\u884C(\u63D2\u4EF6\u7ED3\u679C, {}, { log
|
|
88
|
-
await
|
|
86
|
+
await log.debug("\u627E\u5230 %o \u4E2A \u63D2\u4EF6, \u51C6\u5907\u6267\u884C...", \u63D2\u4EF6\u4EEC.length);
|
|
87
|
+
let \u63D2\u4EF6\u7ED3\u679C = await \u63A5\u53E3\u903B\u8F91.\u8BA1\u7B97\u63D2\u4EF6\u7ED3\u679C(req, res, { log, \u8BF7\u6C42id });
|
|
88
|
+
await log.debug("\u63D2\u4EF6 \u6267\u884C\u5B8C\u6BD5");
|
|
89
|
+
await log.debug("\u51C6\u5907\u6267\u884C\u63A5\u53E3\u5B9E\u73B0...");
|
|
90
|
+
let \u63A5\u53E3\u7ED3\u679C = await \u63A5\u53E3\u903B\u8F91.\u901A\u8FC7\u63D2\u4EF6\u7ED3\u679C\u8FD0\u884C(\u63D2\u4EF6\u7ED3\u679C, {}, { log, \u8BF7\u6C42id });
|
|
91
|
+
await log.debug("\u63A5\u53E3\u5B9E\u73B0\u6267\u884C\u5B8C\u6BD5");
|
|
89
92
|
let \u63A5\u53E3\u8017\u65F6 = Date.now() - \u5F00\u59CB;
|
|
90
|
-
await
|
|
93
|
+
await log.info("\u63A5\u53E3\u903B\u8F91\u6267\u884C\u5B8C\u6BD5, \u8017\u65F6: %o ms", \u63A5\u53E3\u8017\u65F6);
|
|
91
94
|
\u5F00\u59CB = Date.now();
|
|
92
95
|
let \u8F6C\u6362\u7ED3\u679C = \u7ED3\u679C\u8F6C\u6362\u5668.\u5B9E\u73B0(\u63A5\u53E3\u7ED3\u679C);
|
|
93
96
|
let \u9519\u8BEF\u7ED3\u679C = \u76EE\u6807\u63A5\u53E3.\u83B7\u5F97\u63A5\u53E3\u9519\u8BEF\u5F62\u5F0FZod().safeParse(\u8F6C\u6362\u7ED3\u679C);
|
|
@@ -99,59 +102,59 @@ var \u670D\u52A1\u5668 = class {
|
|
|
99
102
|
\u6700\u7EC8\u7ED3\u679C = \u6B63\u786E\u7ED3\u679C.data;
|
|
100
103
|
} else {
|
|
101
104
|
let \u7ED3\u679C\u5B57\u7B26\u4E32 = JSON.stringify(\u9012\u5F52\u622A\u65AD\u5B57\u7B26\u4E32(\u8F6C\u6362\u7ED3\u679C));
|
|
102
|
-
await
|
|
103
|
-
await
|
|
104
|
-
await
|
|
105
|
+
await log.error(`\u8F6C\u6362\u7ED3\u679C\u65E0\u6CD5\u901A\u8FC7\u6821\u9A8C: ${\u7ED3\u679C\u5B57\u7B26\u4E32}`);
|
|
106
|
+
await log.error("\u5BF9\u4E8E\u9519\u8BEF\u7ED3\u679C: %o", \u9519\u8BEF\u7ED3\u679C.error);
|
|
107
|
+
await log.error("\u5BF9\u4E8E\u6B63\u786E\u7ED3\u679C: %o", \u6B63\u786E\u7ED3\u679C.error);
|
|
105
108
|
throw new Error(`\u8F6C\u6362\u7ED3\u679C\u65E0\u6CD5\u901A\u8FC7\u6821\u9A8C`);
|
|
106
109
|
}
|
|
107
110
|
let \u8F6C\u6362\u8017\u65F6 = Date.now() - \u5F00\u59CB;
|
|
108
|
-
await
|
|
109
|
-
await
|
|
111
|
+
await log.info("\u7ED3\u679C\u8F6C\u6362\u4E0E\u6821\u9A8C\u5B8C\u6210, \u8017\u65F6: %o ms", \u8F6C\u6362\u8017\u65F6);
|
|
112
|
+
await log.debug("\u6700\u7EC8\u7ED3\u679C: %o", JSON.stringify(\u9012\u5F52\u622A\u65AD\u5B57\u7B26\u4E32(\u6700\u7EC8\u7ED3\u679C)));
|
|
110
113
|
\u5F00\u59CB = Date.now();
|
|
111
114
|
await \u7ED3\u679C\u8FD4\u56DE\u5668.\u8FD4\u56DE(req, res, \u6700\u7EC8\u7ED3\u679C);
|
|
112
115
|
let \u8FD4\u56DE\u8017\u65F6 = Date.now() - \u5F00\u59CB;
|
|
113
|
-
await
|
|
116
|
+
await log.info("\u8FD4\u56DE\u903B\u8F91\u6267\u884C\u5B8C\u6BD5, \u8017\u65F6: %o ms", \u8FD4\u56DE\u8017\u65F6);
|
|
114
117
|
let \u603B\u8017\u65F6 = Date.now() - \u603B\u5F00\u59CB;
|
|
115
|
-
await
|
|
118
|
+
await log.info("\u63A5\u53E3\u5B8C\u6574\u6267\u884C\u8017\u65F6: %o ms", \u603B\u8017\u65F6);
|
|
116
119
|
}
|
|
117
120
|
async \u521D\u59CB\u5316WebSocket(server) {
|
|
121
|
+
let log = await this.log;
|
|
118
122
|
let wss = new WebSocketServer({ server });
|
|
119
|
-
let \u7CFB\u7EDFlog = await this.\u7CFB\u7EDFlog;
|
|
120
123
|
wss.on("listening", async () => {
|
|
121
|
-
await
|
|
124
|
+
await log.info("WebSocket \u670D\u52A1\u5668\u5DF2\u542F\u52A8\u5E76\u76D1\u542C");
|
|
122
125
|
});
|
|
123
126
|
wss.on("error", async (err) => {
|
|
124
|
-
await
|
|
127
|
+
await log.error("WebSocket \u670D\u52A1\u5668\u53D1\u751F\u9519\u8BEF: %o", err);
|
|
125
128
|
});
|
|
126
129
|
wss.on("connection", async (ws, req) => {
|
|
127
|
-
let \
|
|
128
|
-
await \
|
|
130
|
+
let \u8FDE\u63A5log = log.extend(short().new());
|
|
131
|
+
await \u8FDE\u63A5log.debug("\u6536\u5230 WebSocket \u8FDE\u63A5\u8BF7\u6C42: %o", req.url);
|
|
129
132
|
let \u5BA2\u6237\u7AEFid = req.url?.split("?id=")[1] ?? null;
|
|
130
133
|
if (\u5BA2\u6237\u7AEFid === null) {
|
|
131
|
-
await \
|
|
132
|
-
return this.\u5173\u95EDWebSocket\u8FDE\u63A5(ws, \
|
|
134
|
+
await \u8FDE\u63A5log.error("\u8FDE\u63A5\u8BF7\u6C42\u7F3A\u5C11\u5BA2\u6237\u7AEF ID");
|
|
135
|
+
return this.\u5173\u95EDWebSocket\u8FDE\u63A5(ws, \u8FDE\u63A5log, 4001, "\u7F3A\u5C11\u5BA2\u6237\u7AEF ID");
|
|
133
136
|
}
|
|
134
|
-
await \
|
|
137
|
+
await \u8FDE\u63A5log.debug("\u89E3\u6790\u5BA2\u6237\u7AEF ID: %s", \u5BA2\u6237\u7AEFid);
|
|
135
138
|
let WebSocket\u7BA1\u7406\u5668 = Global.getItemSync("WebSocket\u7BA1\u7406\u5668");
|
|
136
139
|
let \u8FDE\u63A5\u5DF2\u5B58\u5728 = WebSocket\u7BA1\u7406\u5668.\u67E5\u8BE2\u8FDE\u63A5\u5B58\u5728(\u5BA2\u6237\u7AEFid);
|
|
137
140
|
if (\u8FDE\u63A5\u5DF2\u5B58\u5728) {
|
|
138
|
-
await \
|
|
139
|
-
return this.\u5173\u95EDWebSocket\u8FDE\u63A5(ws, \
|
|
141
|
+
await \u8FDE\u63A5log.error("\u5BA2\u6237\u7AEF ID \u5DF2\u5B58\u5728: %s", \u5BA2\u6237\u7AEFid);
|
|
142
|
+
return this.\u5173\u95EDWebSocket\u8FDE\u63A5(ws, \u8FDE\u63A5log, 4002, "\u5BA2\u6237\u7AEF ID \u5DF2\u5B58\u5728");
|
|
140
143
|
}
|
|
141
144
|
WebSocket\u7BA1\u7406\u5668.\u589E\u52A0\u8FDE\u63A5(\u5BA2\u6237\u7AEFid, ws);
|
|
142
|
-
await \
|
|
145
|
+
await \u8FDE\u63A5log.info("WebSocket \u8FDE\u63A5\u5DF2\u5EFA\u7ACB, \u5BA2\u6237\u7AEF ID: %s", \u5BA2\u6237\u7AEFid);
|
|
143
146
|
ws.on("close", async () => {
|
|
144
|
-
await \
|
|
147
|
+
await \u8FDE\u63A5log.info("WebSocket \u8FDE\u63A5\u5173\u95ED: %s", \u5BA2\u6237\u7AEFid);
|
|
145
148
|
WebSocket\u7BA1\u7406\u5668.\u5220\u9664\u8FDE\u63A5(\u5BA2\u6237\u7AEFid);
|
|
146
149
|
});
|
|
147
150
|
ws.on("error", async (err) => {
|
|
148
|
-
await \
|
|
151
|
+
await \u8FDE\u63A5log.error("WebSocket \u51FA\u73B0\u9519\u8BEF, \u5BA2\u6237\u7AEF ID: %s, \u9519\u8BEF: %o", \u5BA2\u6237\u7AEFid, err);
|
|
149
152
|
WebSocket\u7BA1\u7406\u5668.\u5220\u9664\u8FDE\u63A5(\u5BA2\u6237\u7AEFid);
|
|
150
153
|
});
|
|
151
154
|
});
|
|
152
155
|
}
|
|
153
|
-
async \u5173\u95EDWebSocket\u8FDE\u63A5(ws,
|
|
154
|
-
await
|
|
156
|
+
async \u5173\u95EDWebSocket\u8FDE\u63A5(ws, log, code, reason) {
|
|
157
|
+
await log.debug(`\u5173\u95ED WebSocket \u8FDE\u63A5, \u4EE3\u7801: ${code}, \u539F\u56E0: ${reason}`);
|
|
155
158
|
ws.close(code, reason);
|
|
156
159
|
}
|
|
157
160
|
\u83B7\u53D6\u672C\u5730\u5730\u5740() {
|
package/dist/esm/index.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
export { 严格递归合并对象, 普通对象深合并, 构造元组, 构造对象 } from './help/help.js';
|
|
2
|
-
export { 任 as 任意接口, x as 任意接口结果转换器, n as 任意接口逻辑, y as 任意插件, 兼 as 兼容空对象, A as 取插件内部ts类型, 取 as 取插件内部类型, 可 as 可调用接口逻辑, 合 as 合并插件结果, 常 as 常用形式转换器, b as 接口, a as 接口方法类型, w as 接口结果转换器, 接 as 接口路径类型, m as 接口逻辑, l as 接口逻辑Base, j as 接口逻辑正确类型, i as 接口逻辑错误类型, k as 接口逻辑附加参数类型, 插 as 插件, z as 插件项类型, 服 as 服务器, 清 as 清理函数类型, 直 as 直接形式转换器, 空 as 空对象, c as 获得接口方法类型, f as 获得接口正确形式, g as 获得接口结果转换器类型, h as 获得接口结果返回器类型, 获 as 获得接口路径类型, s as 获得接口逻辑上游接口类型, o as 获得接口逻辑插件类型, t as 获得接口逻辑最后接口类型, r as 获得接口逻辑正确类型, d as 获得接口逻辑类型, q as 获得接口逻辑错误类型, p as 获得接口逻辑附加参数类型, e as 获得接口错误形式, 计 as 计算接口逻辑参数, v as 计算接口逻辑正确结果, u as 计算接口逻辑错误结果, 请 as 请求附加参数类型 } from './interface-base-
|
|
2
|
+
export { 任 as 任意接口, x as 任意接口结果转换器, n as 任意接口逻辑, y as 任意插件, 兼 as 兼容空对象, A as 取插件内部ts类型, 取 as 取插件内部类型, 可 as 可调用接口逻辑, 合 as 合并插件结果, 常 as 常用形式转换器, b as 接口, a as 接口方法类型, w as 接口结果转换器, 接 as 接口路径类型, m as 接口逻辑, l as 接口逻辑Base, j as 接口逻辑正确类型, i as 接口逻辑错误类型, k as 接口逻辑附加参数类型, 插 as 插件, z as 插件项类型, 日 as 日志回调类型, 服 as 服务器, 清 as 清理函数类型, 直 as 直接形式转换器, 空 as 空对象, c as 获得接口方法类型, f as 获得接口正确形式, g as 获得接口结果转换器类型, h as 获得接口结果返回器类型, 获 as 获得接口路径类型, s as 获得接口逻辑上游接口类型, o as 获得接口逻辑插件类型, t as 获得接口逻辑最后接口类型, r as 获得接口逻辑正确类型, d as 获得接口逻辑类型, q as 获得接口逻辑错误类型, p as 获得接口逻辑附加参数类型, e as 获得接口错误形式, 计 as 计算接口逻辑参数, v as 计算接口逻辑正确结果, u as 计算接口逻辑错误结果, 请 as 请求附加参数类型 } from './interface-base-DDfmN_Dg.js';
|
|
3
3
|
export { 任意接口结果返回器, 常用返回器, 接口结果返回器, 自定义返回器 } from './interface/interface-retuen.js';
|
|
4
4
|
export { 接口测试 } from './interface/interface-test.js';
|
|
5
5
|
export { 自定义数据插件 } from './plugin/extend/custom-data.js';
|
package/dist/esm/index.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import 'zod';
|
|
2
|
-
export { 任 as 任意接口, b as 接口, a as 接口方法类型, 接 as 接口路径类型, c as 获得接口方法类型, f as 获得接口正确形式, g as 获得接口结果转换器类型, h as 获得接口结果返回器类型, 获 as 获得接口路径类型, d as 获得接口逻辑类型, e as 获得接口错误形式 } from '../interface-base-
|
|
2
|
+
export { 任 as 任意接口, b as 接口, a as 接口方法类型, 接 as 接口路径类型, c as 获得接口方法类型, f as 获得接口正确形式, g as 获得接口结果转换器类型, h as 获得接口结果返回器类型, 获 as 获得接口路径类型, d as 获得接口逻辑类型, e as 获得接口错误形式 } from '../interface-base-DDfmN_Dg.js';
|
|
3
3
|
import './interface-retuen.js';
|
|
4
4
|
import '@lsby/ts-fp-data';
|
|
5
5
|
import 'express';
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import '@lsby/ts-fp-data';
|
|
2
2
|
import 'express';
|
|
3
3
|
import '../help/interior.js';
|
|
4
|
-
export { n as 任意接口逻辑, 兼 as 兼容空对象, 可 as 可调用接口逻辑, m as 接口逻辑, l as 接口逻辑Base, j as 接口逻辑正确类型, i as 接口逻辑错误类型, k as 接口逻辑附加参数类型, 清 as 清理函数类型, 空 as 空对象, s as 获得接口逻辑上游接口类型, o as 获得接口逻辑插件类型, t as 获得接口逻辑最后接口类型, r as 获得接口逻辑正确类型, q as 获得接口逻辑错误类型, p as 获得接口逻辑附加参数类型, 计 as 计算接口逻辑参数, v as 计算接口逻辑正确结果, u as 计算接口逻辑错误结果 } from '../interface-base-
|
|
4
|
+
export { n as 任意接口逻辑, 兼 as 兼容空对象, 可 as 可调用接口逻辑, m as 接口逻辑, l as 接口逻辑Base, j as 接口逻辑正确类型, i as 接口逻辑错误类型, k as 接口逻辑附加参数类型, 清 as 清理函数类型, 空 as 空对象, s as 获得接口逻辑上游接口类型, o as 获得接口逻辑插件类型, t as 获得接口逻辑最后接口类型, r as 获得接口逻辑正确类型, q as 获得接口逻辑错误类型, p as 获得接口逻辑附加参数类型, 计 as 计算接口逻辑参数, v as 计算接口逻辑正确结果, u as 计算接口逻辑错误结果 } from '../interface-base-DDfmN_Dg.js';
|
|
5
5
|
import 'zod';
|
|
6
6
|
import '@lsby/ts-log';
|
|
7
7
|
import 'node:http';
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import '@lsby/ts-fp-data';
|
|
2
|
-
export { x as 任意接口结果转换器, 常 as 常用形式转换器, w as 接口结果转换器, 直 as 直接形式转换器 } from '../interface-base-
|
|
2
|
+
export { x as 任意接口结果转换器, 常 as 常用形式转换器, w as 接口结果转换器, 直 as 直接形式转换器 } from '../interface-base-DDfmN_Dg.js';
|
|
3
3
|
import 'zod';
|
|
4
4
|
import 'express';
|
|
5
5
|
import '../help/interior.js';
|
|
@@ -6,12 +6,14 @@ import { Log } from '@lsby/ts-log';
|
|
|
6
6
|
import * as http from 'node:http';
|
|
7
7
|
import { 接口结果返回器 as _______ } from './interface/interface-retuen.js';
|
|
8
8
|
|
|
9
|
+
type 日志回调类型 = (level: 'trace' | 'debug' | 'info' | 'warn' | 'error', namespace: string, content: string) => Promise<void>;
|
|
9
10
|
type 请求附加参数类型 = {
|
|
10
11
|
log: Log;
|
|
12
|
+
请求id: string;
|
|
11
13
|
};
|
|
12
14
|
declare class 服务器 {
|
|
13
|
-
private
|
|
14
|
-
private
|
|
15
|
+
private log;
|
|
16
|
+
private 日志回调?;
|
|
15
17
|
private 接口们;
|
|
16
18
|
private 端口;
|
|
17
19
|
private 静态资源路径;
|
|
@@ -21,8 +23,7 @@ declare class 服务器 {
|
|
|
21
23
|
端口: number;
|
|
22
24
|
静态资源路径?: string;
|
|
23
25
|
默认get文件路径?: string;
|
|
24
|
-
|
|
25
|
-
接口log?: Log;
|
|
26
|
+
日志回调?: 日志回调类型;
|
|
26
27
|
});
|
|
27
28
|
run(): Promise<{
|
|
28
29
|
ip: string[];
|
|
@@ -231,4 +232,4 @@ type 获得接口正确形式<A> = A extends 接口<any, any, any, any, infer X,
|
|
|
231
232
|
type 获得接口结果转换器类型<A> = A extends 接口<any, any, any, any, any, infer X, any> ? X : never;
|
|
232
233
|
type 获得接口结果返回器类型<A> = A extends 接口<any, any, any, any, any, any, infer X> ? X : never;
|
|
233
234
|
|
|
234
|
-
export { type 取插件内部ts类型 as A, type 接口方法类型 as a, 接口 as b, type 获得接口方法类型 as c, type 获得接口逻辑类型 as d, type 获得接口错误形式 as e, type 获得接口正确形式 as f, type 获得接口结果转换器类型 as g, type 获得接口结果返回器类型 as h, type 接口逻辑错误类型 as i, type 接口逻辑正确类型 as j, type 接口逻辑附加参数类型 as k, 接口逻辑Base as l, 接口逻辑 as m, type 任意接口逻辑 as n, type 获得接口逻辑插件类型 as o, type 获得接口逻辑附加参数类型 as p, type 获得接口逻辑错误类型 as q, type 获得接口逻辑正确类型 as r, type 获得接口逻辑上游接口类型 as s, type 获得接口逻辑最后接口类型 as t, type 计算接口逻辑错误结果 as u, type 计算接口逻辑正确结果 as v, 接口结果转换器 as w, type 任意接口结果转换器 as x, type 任意插件 as y, type 插件项类型 as z, type 任意接口 as 任, type 兼容空对象 as 兼, type 取插件内部类型 as 取, type 可调用接口逻辑 as 可, type 合并插件结果 as 合, 常用形式转换器 as 常, type 接口路径类型 as 接, 插件 as 插, 服务器 as 服, type 清理函数类型 as 清, 直接形式转换器 as 直, type 空对象 as 空, type 获得接口路径类型 as 获, type 计算接口逻辑参数 as 计, type 请求附加参数类型 as 请 };
|
|
235
|
+
export { type 取插件内部ts类型 as A, type 接口方法类型 as a, 接口 as b, type 获得接口方法类型 as c, type 获得接口逻辑类型 as d, type 获得接口错误形式 as e, type 获得接口正确形式 as f, type 获得接口结果转换器类型 as g, type 获得接口结果返回器类型 as h, type 接口逻辑错误类型 as i, type 接口逻辑正确类型 as j, type 接口逻辑附加参数类型 as k, 接口逻辑Base as l, 接口逻辑 as m, type 任意接口逻辑 as n, type 获得接口逻辑插件类型 as o, type 获得接口逻辑附加参数类型 as p, type 获得接口逻辑错误类型 as q, type 获得接口逻辑正确类型 as r, type 获得接口逻辑上游接口类型 as s, type 获得接口逻辑最后接口类型 as t, type 计算接口逻辑错误结果 as u, type 计算接口逻辑正确结果 as v, 接口结果转换器 as w, type 任意接口结果转换器 as x, type 任意插件 as y, type 插件项类型 as z, type 任意接口 as 任, type 兼容空对象 as 兼, type 取插件内部类型 as 取, type 可调用接口逻辑 as 可, type 合并插件结果 as 合, 常用形式转换器 as 常, type 接口路径类型 as 接, 插件 as 插, type 日志回调类型 as 日, 服务器 as 服, type 清理函数类型 as 清, 直接形式转换器 as 直, type 空对象 as 空, type 获得接口路径类型 as 获, type 计算接口逻辑参数 as 计, type 请求附加参数类型 as 请 };
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import express from 'express';
|
|
2
2
|
import { AnyZodObject, z } from 'zod';
|
|
3
3
|
import { 严格递归合并对象 as ________ } from '../../help/help.js';
|
|
4
|
-
import { 插 as __, z as _____, 取 as _______, o as __________ } from '../../interface-base-
|
|
4
|
+
import { 插 as __, z as _____, 取 as _______, o as __________ } from '../../interface-base-DDfmN_Dg.js';
|
|
5
5
|
import '@lsby/ts-fp-data';
|
|
6
6
|
import '../../help/interior.js';
|
|
7
7
|
import '@lsby/ts-log';
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { AnyZodObject, z } from 'zod';
|
|
2
2
|
import { 严格递归合并对象 as ________ } from '../../help/help.js';
|
|
3
|
-
import { 插 as __, z as _____, 取 as _______, o as __________ } from '../../interface-base-
|
|
3
|
+
import { 插 as __, z as _____, 取 as _______, o as __________ } from '../../interface-base-DDfmN_Dg.js';
|
|
4
4
|
import '@lsby/ts-fp-data';
|
|
5
5
|
import 'express';
|
|
6
6
|
import '../../help/interior.js';
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import express from 'express';
|
|
2
2
|
import { z } from 'zod';
|
|
3
|
-
import { 插 as __ } from '../../interface-base-
|
|
3
|
+
import { 插 as __ } from '../../interface-base-DDfmN_Dg.js';
|
|
4
4
|
import '@lsby/ts-fp-data';
|
|
5
5
|
import '../../help/interior.js';
|
|
6
6
|
import '@lsby/ts-log';
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import 'express';
|
|
2
2
|
import 'zod';
|
|
3
|
-
export { y as 任意插件, A as 取插件内部ts类型, 取 as 取插件内部类型, 合 as 合并插件结果, 插 as 插件, z as 插件项类型 } from '../interface-base-
|
|
3
|
+
export { y as 任意插件, A as 取插件内部ts类型, 取 as 取插件内部类型, 合 as 合并插件结果, 插 as 插件, z as 插件项类型 } from '../interface-base-DDfmN_Dg.js';
|
|
4
4
|
import '@lsby/ts-fp-data';
|
|
5
5
|
import '../help/interior.js';
|
|
6
6
|
import '@lsby/ts-log';
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import '@lsby/ts-log';
|
|
2
2
|
import 'node:http';
|
|
3
|
-
export { 服 as 服务器, 请 as 请求附加参数类型 } from '../interface-base-
|
|
3
|
+
export { 日 as 日志回调类型, 服 as 服务器, 请 as 请求附加参数类型 } from '../interface-base-DDfmN_Dg.js';
|
|
4
4
|
import 'zod';
|
|
5
5
|
import '@lsby/ts-fp-data';
|
|
6
6
|
import 'express';
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { Request, Response } from 'express';
|
|
2
2
|
import { z } from 'zod';
|
|
3
|
-
import { 接 as ______, a as ______$1, l as ____Base, 空 as ___, b as __, 常 as _______, q as __________, r as __________$1 } from '../interface-base-
|
|
3
|
+
import { 接 as ______, a as ______$1, l as ____Base, 空 as ___, b as __, 常 as _______, q as __________, r as __________$1 } from '../interface-base-DDfmN_Dg.js';
|
|
4
4
|
import { 自定义返回器 as ______$2 } from '../interface/interface-retuen.js';
|
|
5
5
|
import '@lsby/ts-fp-data';
|
|
6
6
|
import '../help/interior.js';
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
|
-
import { 接 as ______, a as ______$1, l as ____Base, 空 as ___, b as __, 常 as _______, q as __________, r as __________$1 } from '../interface-base-
|
|
2
|
+
import { 接 as ______, a as ______$1, l as ____Base, 空 as ___, b as __, 常 as _______, q as __________, r as __________$1 } from '../interface-base-DDfmN_Dg.js';
|
|
3
3
|
import { 常用返回器 as _____ } from '../interface/interface-retuen.js';
|
|
4
4
|
import '@lsby/ts-fp-data';
|
|
5
5
|
import 'express';
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
|
-
import { 接 as ______, a as ______$1, l as ____Base, 空 as ___, b as __, 直 as _______, q as __________, r as __________$1 } from '../interface-base-
|
|
2
|
+
import { 接 as ______, a as ______$1, l as ____Base, 空 as ___, b as __, 直 as _______, q as __________, r as __________$1 } from '../interface-base-DDfmN_Dg.js';
|
|
3
3
|
import { 常用返回器 as _____ } from '../interface/interface-retuen.js';
|
|
4
4
|
import '@lsby/ts-fp-data';
|
|
5
5
|
import 'express';
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { Request, Response } from 'express';
|
|
2
2
|
import { z } from 'zod';
|
|
3
|
-
import { b as __, 接 as ______, a as ______$1, l as ____Base, 空 as ___, w as _______ } from '../interface-base-
|
|
3
|
+
import { b as __, 接 as ______, a as ______$1, l as ____Base, 空 as ___, w as _______ } from '../interface-base-DDfmN_Dg.js';
|
|
4
4
|
import { 接口结果返回器 as _______$1 } from '../interface/interface-retuen.js';
|
|
5
5
|
import '@lsby/ts-fp-data';
|
|
6
6
|
import '../help/interior.js';
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { Request, Response } from 'express';
|
|
2
2
|
import { ReadStream } from 'node:fs';
|
|
3
3
|
import { z } from 'zod';
|
|
4
|
-
import { 接 as ______, a as ______$1, l as ____Base, 空 as ___, b as __, 直 as _______, q as __________, r as __________$1 } from '../interface-base-
|
|
4
|
+
import { 接 as ______, a as ______$1, l as ____Base, 空 as ___, b as __, 直 as _______, q as __________, r as __________$1 } from '../interface-base-DDfmN_Dg.js';
|
|
5
5
|
import { 接口结果返回器 as _______$1 } from '../interface/interface-retuen.js';
|
|
6
6
|
import '@lsby/ts-fp-data';
|
|
7
7
|
import '../help/interior.js';
|