@lsby/net-core 0.12.3 → 0.13.4
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/bin/gen-api-list/bin.cjs +14 -2
- package/dist/bin/gen-api-list/index.cjs +14 -2
- package/dist/bin/gen-api-type/bin.cjs +53 -34
- package/dist/bin/gen-api-type/index.cjs +53 -34
- package/dist/bin/gen-test/bin.cjs +16 -4
- package/dist/bin/gen-test/index.cjs +16 -4
- package/dist/cjs/bin/gen-api-list/bin.cjs +14 -2
- package/dist/cjs/bin/gen-api-list/index.cjs +14 -2
- package/dist/cjs/bin/gen-api-type/bin.cjs +53 -34
- package/dist/cjs/bin/gen-api-type/index.cjs +53 -34
- package/dist/cjs/bin/gen-test/bin.cjs +16 -4
- package/dist/cjs/bin/gen-test/index.cjs +16 -4
- package/dist/cjs/global/log.cjs +31 -0
- package/dist/cjs/global/log.d.cts +5 -0
- package/dist/cjs/global/model/hub.cjs +84 -0
- package/dist/cjs/global/model/hub.d.cts +26 -0
- package/dist/cjs/global/model/web-socket.cjs +166 -0
- package/dist/cjs/global/model/web-socket.d.cts +21 -0
- package/dist/cjs/global/web-socket.cjs +169 -0
- package/dist/cjs/global/web-socket.d.cts +7 -0
- package/dist/cjs/help/help.cjs +151 -2
- package/dist/cjs/help/help.d.cts +12 -5
- package/dist/cjs/help/interior.cjs +12 -1
- package/dist/cjs/help/interior.d.cts +6 -3
- package/dist/cjs/index.cjs +701 -473
- package/dist/cjs/index.d.cts +29 -18
- package/dist/cjs/interface/interface-base.cjs +15 -17
- package/dist/cjs/interface/interface-base.d.cts +43 -5
- package/dist/cjs/interface/interface-logic.cjs +148 -12
- package/dist/cjs/interface/interface-logic.d.cts +131 -7
- package/dist/cjs/interface/interface-plugin.cjs +45 -0
- package/dist/cjs/interface/interface-plugin.d.cts +37 -0
- package/dist/cjs/{plugin/plug.cjs → interface/interface-returner.cjs} +7 -17
- package/dist/cjs/interface/interface-returner.d.cts +32 -0
- package/dist/cjs/interface/interface-test.cjs +41 -9
- package/dist/cjs/interface/interface-test.d.cts +29 -6
- package/dist/cjs/plugin/{extend/custom-data.cjs → custom-data.cjs} +18 -11
- package/dist/cjs/plugin/custom-data.d.cts +16 -0
- package/dist/cjs/plugin/custom.cjs +54 -0
- package/dist/cjs/plugin/custom.d.cts +18 -0
- package/dist/cjs/plugin/form.cjs +109 -0
- package/dist/cjs/plugin/form.d.cts +37 -0
- package/dist/cjs/plugin/{extend/json.cjs → json.cjs} +22 -18
- package/dist/cjs/plugin/json.d.cts +36 -0
- package/dist/cjs/plugin/{extend/log-headers.cjs → log-headers.cjs} +18 -12
- package/dist/cjs/plugin/log-headers.d.cts +17 -0
- package/dist/cjs/plugin/parse-path.cjs +100 -0
- package/dist/cjs/plugin/parse-path.d.cts +73 -0
- package/dist/cjs/plugin/{extend/query.cjs → query.cjs} +24 -20
- package/dist/cjs/plugin/query.d.cts +36 -0
- package/dist/cjs/plugin/urlencoded.cjs +103 -0
- package/dist/cjs/plugin/urlencoded.d.cts +36 -0
- package/dist/cjs/plugin/web-socket.cjs +183 -0
- package/dist/cjs/plugin/web-socket.d.cts +31 -0
- package/dist/cjs/returner/common.cjs +107 -0
- package/dist/cjs/returner/common.d.cts +36 -0
- package/dist/cjs/returner/custom.cjs +55 -0
- package/dist/cjs/returner/custom.d.cts +26 -0
- package/dist/cjs/returner/file-stream-download.cjs +111 -0
- package/dist/cjs/returner/file-stream-download.d.cts +33 -0
- package/dist/cjs/returner/static-file.cjs +95 -0
- package/dist/cjs/returner/static-file.d.cts +30 -0
- package/dist/cjs/returner/virtual-file.cjs +66 -0
- package/dist/cjs/returner/virtual-file.d.cts +30 -0
- package/dist/cjs/server/server.cjs +184 -152
- package/dist/cjs/server/server.d.cts +37 -4
- package/dist/cjs/symbol/export-type.cjs +1 -1
- package/dist/cjs/types/types.cjs +18 -0
- package/dist/cjs/types/types.d.cts +22 -0
- package/dist/esm/bin/gen-api-list/bin.js +2 -1
- package/dist/esm/bin/gen-api-list/index.js +2 -1
- package/dist/esm/bin/gen-api-type/bin.js +1 -1
- package/dist/esm/bin/gen-api-type/index.js +1 -1
- package/dist/esm/bin/gen-test/bin.js +2 -1
- package/dist/esm/bin/gen-test/index.js +2 -1
- package/dist/esm/{chunk-ZIVQ3WZA.js → chunk-2CGBESLT.js} +12 -2
- package/dist/esm/{chunk-GC5W4SQN.js → chunk-7GT72IUT.js} +22 -19
- package/dist/esm/chunk-7OU27OBO.js +14 -0
- package/dist/esm/chunk-7S6SPW32.js +35 -0
- package/dist/esm/{chunk-2NYRVBAS.js → chunk-AB35ZHL3.js} +48 -59
- package/dist/esm/chunk-AG36MLAF.js +65 -0
- package/dist/esm/chunk-EGIJQJFI.js +21 -0
- package/dist/esm/chunk-F5IAX56T.js +7 -0
- package/dist/esm/chunk-FP6Q65NN.js +7 -0
- package/dist/esm/chunk-GAL77HPJ.js +43 -0
- package/dist/esm/chunk-GGNRLQAM.js +48 -0
- package/dist/esm/chunk-HINGVOU6.js +21 -0
- package/dist/esm/{chunk-ZF7EC2OM.js → chunk-HT7VG4BT.js} +1 -1
- package/dist/esm/{chunk-AFWSZAXR.js → chunk-HWIV3BTW.js} +7 -4
- package/dist/esm/{chunk-2FCXR6G7.js → chunk-J3N2TUYJ.js} +53 -34
- package/dist/esm/chunk-J5BX4WJJ.js +69 -0
- package/dist/esm/chunk-JLNRCPJD.js +34 -0
- package/dist/esm/chunk-JSMTJQ3K.js +69 -0
- package/dist/esm/chunk-MRTIZDKN.js +88 -0
- package/dist/esm/{chunk-7LQRWJ3X.js → chunk-MVMDWJTB.js} +14 -1
- package/dist/esm/chunk-NTDDPUP7.js +59 -0
- package/dist/esm/chunk-OEABQXPT.js +29 -0
- package/dist/esm/chunk-P23ZAK4I.js +10 -0
- package/dist/esm/chunk-PAP3X3RJ.js +37 -0
- package/dist/esm/chunk-QQFE27NG.js +37 -0
- package/dist/esm/chunk-RVEKW2PT.js +31 -0
- package/dist/esm/chunk-RWSXMQQI.js +22 -0
- package/dist/esm/{chunk-E23EZWBE.js → chunk-TE6CG2FF.js} +9 -13
- package/dist/esm/{chunk-UKAZDGUR.js → chunk-W7HT4TA6.js} +5 -2
- package/dist/esm/chunk-WXTNTK3M.js +40 -0
- package/dist/esm/global/log.d.ts +5 -0
- package/dist/esm/global/log.js +6 -0
- package/dist/esm/global/model/hub.d.ts +26 -0
- package/dist/esm/global/model/hub.js +8 -0
- package/dist/esm/global/model/web-socket.d.ts +21 -0
- package/dist/esm/global/model/web-socket.js +8 -0
- package/dist/esm/global/web-socket.d.ts +7 -0
- package/dist/esm/global/web-socket.js +9 -0
- package/dist/esm/help/help.d.ts +12 -5
- package/dist/esm/help/help.js +9 -3
- package/dist/esm/help/interior.d.ts +6 -3
- package/dist/esm/help/interior.js +3 -1
- package/dist/esm/index.d.ts +29 -18
- package/dist/esm/index.js +65 -57
- package/dist/esm/interface/interface-base.d.ts +43 -5
- package/dist/esm/interface/interface-base.js +1 -1
- package/dist/esm/interface/interface-logic.d.ts +131 -7
- package/dist/esm/interface/interface-logic.js +6 -2
- package/dist/esm/interface/interface-plugin.d.ts +37 -0
- package/dist/esm/{plugin/plug.js → interface/interface-plugin.js} +1 -1
- package/dist/esm/interface/interface-returner.d.ts +32 -0
- package/dist/esm/interface/interface-returner.js +6 -0
- package/dist/esm/interface/interface-test.d.ts +29 -6
- package/dist/esm/interface/interface-test.js +5 -3
- package/dist/esm/plugin/custom-data.d.ts +16 -0
- package/dist/esm/plugin/{extend/custom-data.js → custom-data.js} +2 -2
- package/dist/esm/plugin/custom.d.ts +18 -0
- package/dist/esm/plugin/custom.js +7 -0
- package/dist/esm/plugin/form.d.ts +37 -0
- package/dist/esm/plugin/form.js +8 -0
- package/dist/esm/plugin/json.d.ts +36 -0
- package/dist/esm/plugin/json.js +8 -0
- package/dist/esm/plugin/log-headers.d.ts +17 -0
- package/dist/esm/plugin/{extend/log-headers.js → log-headers.js} +2 -2
- package/dist/esm/plugin/parse-path.d.ts +73 -0
- package/dist/esm/plugin/parse-path.js +8 -0
- package/dist/esm/plugin/query.d.ts +36 -0
- package/dist/esm/plugin/query.js +8 -0
- package/dist/esm/plugin/urlencoded.d.ts +36 -0
- package/dist/esm/plugin/urlencoded.js +8 -0
- package/dist/esm/plugin/web-socket.d.ts +31 -0
- package/dist/esm/plugin/web-socket.js +8 -0
- package/dist/esm/returner/common.d.ts +36 -0
- package/dist/esm/returner/common.js +8 -0
- package/dist/esm/returner/custom.d.ts +26 -0
- package/dist/esm/returner/custom.js +7 -0
- package/dist/esm/returner/file-stream-download.d.ts +33 -0
- package/dist/esm/returner/file-stream-download.js +8 -0
- package/dist/esm/returner/static-file.d.ts +30 -0
- package/dist/esm/returner/static-file.js +7 -0
- package/dist/esm/returner/virtual-file.d.ts +30 -0
- package/dist/esm/returner/virtual-file.js +7 -0
- package/dist/esm/server/server.d.ts +37 -4
- package/dist/esm/server/server.js +5 -3
- package/dist/esm/symbol/export-type.js +1 -1
- package/dist/esm/types/types.d.ts +22 -0
- package/dist/esm/types/types.js +1 -0
- package/package.json +35 -40
- package/dist/bin/gen-api-list/test.cjs +0 -1
- package/dist/bin/gen-api-list/test.d.cts +0 -2
- package/dist/bin/gen-api-type/test.cjs +0 -1
- package/dist/bin/gen-api-type/test.d.cts +0 -2
- package/dist/cjs/action/action.bak.cjs +0 -158
- package/dist/cjs/action/action.bak.d.cts +0 -99
- package/dist/cjs/bin/gen-api-list/test.cjs +0 -1
- package/dist/cjs/bin/gen-api-list/test.d.cts +0 -2
- package/dist/cjs/bin/gen-api-type/test.cjs +0 -1
- package/dist/cjs/bin/gen-api-type/test.d.cts +0 -2
- package/dist/cjs/global/global.cjs +0 -107
- package/dist/cjs/global/global.d.cts +0 -23
- package/dist/cjs/interface/interface-result.cjs +0 -59
- package/dist/cjs/interface/interface-result.d.cts +0 -8
- package/dist/cjs/interface/interface-retuen.cjs +0 -49
- package/dist/cjs/interface/interface-retuen.d.cts +0 -30
- package/dist/cjs/interface-base-gRngpxki.d.cts +0 -235
- package/dist/cjs/plugin/extend/custom-data.d.cts +0 -17
- package/dist/cjs/plugin/extend/json.d.cts +0 -25
- package/dist/cjs/plugin/extend/log-headers.d.cts +0 -15
- package/dist/cjs/plugin/extend/query.d.cts +0 -25
- package/dist/cjs/plugin/extend/urlencoded.cjs +0 -76
- package/dist/cjs/plugin/extend/urlencoded.d.cts +0 -16
- package/dist/cjs/plugin/extend/web-socket.cjs +0 -199
- package/dist/cjs/plugin/extend/web-socket.d.cts +0 -29
- package/dist/cjs/plugin/plug.d.cts +0 -8
- package/dist/cjs/wrapper/common-wrapper-return.cjs +0 -103
- package/dist/cjs/wrapper/common-wrapper-return.d.cts +0 -29
- package/dist/cjs/wrapper/common-wrapper.cjs +0 -99
- package/dist/cjs/wrapper/common-wrapper.d.cts +0 -27
- package/dist/cjs/wrapper/deferred-result-wrapper.cjs +0 -99
- package/dist/cjs/wrapper/deferred-result-wrapper.d.cts +0 -26
- package/dist/cjs/wrapper/express-compatible-wrapper.cjs +0 -228
- package/dist/cjs/wrapper/express-compatible-wrapper.d.cts +0 -55
- package/dist/cjs/wrapper/file-download-wrapper.cjs +0 -131
- package/dist/cjs/wrapper/file-download-wrapper.d.cts +0 -80
- package/dist/esm/action/action.bak.d.ts +0 -99
- package/dist/esm/action/action.bak.js +0 -133
- package/dist/esm/bin/gen-api-list/test.d.ts +0 -2
- package/dist/esm/bin/gen-api-type/test.d.ts +0 -2
- package/dist/esm/bin/gen-api-type/test.js +0 -0
- package/dist/esm/chunk-3YGTOEO2.js +0 -82
- package/dist/esm/chunk-43GZE5YL.js +0 -17
- package/dist/esm/chunk-6RQPNF75.js +0 -24
- package/dist/esm/chunk-7MHKNSNT.js +0 -20
- package/dist/esm/chunk-FYEIC5J3.js +0 -24
- package/dist/esm/chunk-GKABWQWT.js +0 -24
- package/dist/esm/chunk-IM3E5KN4.js +0 -61
- package/dist/esm/chunk-KENYGKWI.js +0 -37
- package/dist/esm/chunk-MDUWXEQ7.js +0 -37
- package/dist/esm/chunk-N7TPWCQ5.js +0 -17
- package/dist/esm/chunk-P75EGBKC.js +0 -33
- package/dist/esm/chunk-SGOVPJHV.js +0 -54
- package/dist/esm/chunk-UUXGAK5S.js +0 -31
- package/dist/esm/chunk-VMCAX3QH.js +0 -18
- package/dist/esm/chunk-VRF5WLKI.js +0 -30
- package/dist/esm/chunk-XBAKTT6S.js +0 -23
- package/dist/esm/global/global.d.ts +0 -23
- package/dist/esm/global/global.js +0 -8
- package/dist/esm/interface/interface-result.d.ts +0 -8
- package/dist/esm/interface/interface-result.js +0 -10
- package/dist/esm/interface/interface-retuen.d.ts +0 -30
- package/dist/esm/interface/interface-retuen.js +0 -10
- package/dist/esm/interface-base-DDfmN_Dg.d.ts +0 -235
- package/dist/esm/plugin/extend/custom-data.d.ts +0 -17
- package/dist/esm/plugin/extend/json.d.ts +0 -25
- package/dist/esm/plugin/extend/json.js +0 -8
- package/dist/esm/plugin/extend/log-headers.d.ts +0 -15
- package/dist/esm/plugin/extend/query.d.ts +0 -25
- package/dist/esm/plugin/extend/query.js +0 -8
- package/dist/esm/plugin/extend/urlencoded.d.ts +0 -16
- package/dist/esm/plugin/extend/urlencoded.js +0 -7
- package/dist/esm/plugin/extend/web-socket.d.ts +0 -29
- package/dist/esm/plugin/extend/web-socket.js +0 -8
- package/dist/esm/plugin/plug.d.ts +0 -8
- package/dist/esm/wrapper/common-wrapper-return.d.ts +0 -29
- package/dist/esm/wrapper/common-wrapper-return.js +0 -9
- package/dist/esm/wrapper/common-wrapper.d.ts +0 -27
- package/dist/esm/wrapper/common-wrapper.js +0 -9
- package/dist/esm/wrapper/deferred-result-wrapper.d.ts +0 -26
- package/dist/esm/wrapper/deferred-result-wrapper.js +0 -9
- package/dist/esm/wrapper/express-compatible-wrapper.d.ts +0 -55
- package/dist/esm/wrapper/express-compatible-wrapper.js +0 -11
- package/dist/esm/wrapper/file-download-wrapper.d.ts +0 -80
- package/dist/esm/wrapper/file-download-wrapper.js +0 -9
- /package/dist/esm/{bin/gen-api-list/test.js → chunk-BWFSM5FK.js} +0 -0
|
@@ -74,36 +74,46 @@ async function main(tsconfig\u8DEF\u5F84, \u76EE\u6807\u8DEF\u5F84, \u8F93\u51FA
|
|
|
74
74
|
await log.debug(`\u7B5B\u9009\u51FA ${\u76F8\u5173\u6E90\u6587\u4EF6\u4EEC.length} \u4E2A\u76F8\u5173\u6E90\u6587\u4EF6`);
|
|
75
75
|
let \u4F34\u968F\u7684\u865A\u62DF\u6587\u4EF6\u4EEC = \u76F8\u5173\u6E90\u6587\u4EF6\u4EEC.map((a) => {
|
|
76
76
|
let \u4EE3\u7801 = `
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
77
|
+
import {
|
|
78
|
+
GetNetCoreExportTypeDefine,
|
|
79
|
+
GetNetCoreExportTypeName,
|
|
80
|
+
\u53D6\u7B2C\u4E00\u4E2AWS\u63D2\u4EF6\u8F93\u5165,
|
|
81
|
+
\u53D6\u7B2C\u4E00\u4E2AWS\u63D2\u4EF6\u8F93\u51FA,
|
|
82
|
+
\u5408\u5E76Query\u63D2\u4EF6\u7ED3\u679C,
|
|
83
|
+
\u5408\u5E76JSON\u63D2\u4EF6\u7ED3\u679C,
|
|
84
|
+
\u5408\u5E76UrlEncoded\u53C2\u6570\u89E3\u6790\u63D2\u4EF6\u7ED3\u679C,
|
|
85
|
+
\u8BA1\u7B97\u63A5\u53E3\u903B\u8F91Form\u53C2\u6570,
|
|
86
|
+
\u83B7\u5F97\u63A5\u53E3\u65B9\u6CD5\u7C7B\u578B,
|
|
87
|
+
\u83B7\u5F97\u63A5\u53E3\u8DEF\u5F84\u7C7B\u578B,
|
|
88
|
+
\u83B7\u5F97\u63A5\u53E3\u8FD4\u56DE\u5668\u63A5\u53E3\u6B63\u786E\u7C7B\u578B,
|
|
89
|
+
\u83B7\u5F97\u63A5\u53E3\u8FD4\u56DE\u5668\u63A5\u53E3\u9519\u8BEF\u7C7B\u578B,
|
|
90
|
+
\u83B7\u5F97\u63A5\u53E3\u8FD4\u56DE\u5668\u7C7B\u578B,
|
|
91
|
+
\u83B7\u5F97\u63A5\u53E3\u903B\u8F91\u63D2\u4EF6\u7C7B\u578B,
|
|
92
|
+
\u83B7\u5F97\u63A5\u53E3\u903B\u8F91\u7C7B\u578B,
|
|
93
|
+
} from '@lsby/net-core'
|
|
94
|
+
import \u5BFC\u5165 from "./${a.fileName.split("/").at(-1)?.replaceAll(".ts", "")}"
|
|
92
95
|
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
96
|
+
type jsonPath = \u83B7\u5F97\u63A5\u53E3\u8DEF\u5F84\u7C7B\u578B<typeof \u5BFC\u5165>
|
|
97
|
+
type jsonMethod = \u83B7\u5F97\u63A5\u53E3\u65B9\u6CD5\u7C7B\u578B<typeof \u5BFC\u5165>
|
|
98
|
+
type \u662F\u5426\u4E3A\u6B63\u5219 = jsonPath extends RegExp ? true : false
|
|
99
|
+
type getInput = \u5408\u5E76Query\u63D2\u4EF6\u7ED3\u679C<\u83B7\u5F97\u63A5\u53E3\u903B\u8F91\u63D2\u4EF6\u7C7B\u578B<\u83B7\u5F97\u63A5\u53E3\u903B\u8F91\u7C7B\u578B<typeof \u5BFC\u5165>>>
|
|
100
|
+
type jsonInput = \u5408\u5E76JSON\u63D2\u4EF6\u7ED3\u679C<\u83B7\u5F97\u63A5\u53E3\u903B\u8F91\u63D2\u4EF6\u7C7B\u578B<\u83B7\u5F97\u63A5\u53E3\u903B\u8F91\u7C7B\u578B<typeof \u5BFC\u5165>>>
|
|
101
|
+
type urlEncodedInput = \u5408\u5E76UrlEncoded\u53C2\u6570\u89E3\u6790\u63D2\u4EF6\u7ED3\u679C<\u83B7\u5F97\u63A5\u53E3\u903B\u8F91\u63D2\u4EF6\u7C7B\u578B<\u83B7\u5F97\u63A5\u53E3\u903B\u8F91\u7C7B\u578B<typeof \u5BFC\u5165>>>
|
|
102
|
+
type formDataInput = \u8BA1\u7B97\u63A5\u53E3\u903B\u8F91Form\u53C2\u6570<\u83B7\u5F97\u63A5\u53E3\u903B\u8F91\u7C7B\u578B<typeof \u5BFC\u5165>>
|
|
103
|
+
type jsonErrorOutput = \u83B7\u5F97\u63A5\u53E3\u8FD4\u56DE\u5668\u63A5\u53E3\u9519\u8BEF\u7C7B\u578B<\u83B7\u5F97\u63A5\u53E3\u8FD4\u56DE\u5668\u7C7B\u578B<typeof \u5BFC\u5165>>
|
|
104
|
+
type jsonSuccessOutput = \u83B7\u5F97\u63A5\u53E3\u8FD4\u56DE\u5668\u63A5\u53E3\u6B63\u786E\u7C7B\u578B<\u83B7\u5F97\u63A5\u53E3\u8FD4\u56DE\u5668\u7C7B\u578B<typeof \u5BFC\u5165>>
|
|
105
|
+
type wsInput = \u53D6\u7B2C\u4E00\u4E2AWS\u63D2\u4EF6\u8F93\u5165<\u83B7\u5F97\u63A5\u53E3\u903B\u8F91\u63D2\u4EF6\u7C7B\u578B<\u83B7\u5F97\u63A5\u53E3\u903B\u8F91\u7C7B\u578B<typeof \u5BFC\u5165>>>
|
|
106
|
+
type wsOutput = \u53D6\u7B2C\u4E00\u4E2AWS\u63D2\u4EF6\u8F93\u51FA<\u83B7\u5F97\u63A5\u53E3\u903B\u8F91\u63D2\u4EF6\u7C7B\u578B<\u83B7\u5F97\u63A5\u53E3\u903B\u8F91\u7C7B\u578B<typeof \u5BFC\u5165>>>
|
|
107
|
+
type JSON\u63A5\u53E3\u8BA1\u7B97\u7ED3\u679C = \u662F\u5426\u4E3A\u6B63\u5219 extends true
|
|
108
|
+
? never
|
|
109
|
+
: jsonPath extends never
|
|
110
|
+
? never
|
|
111
|
+
: jsonPath extends infer _
|
|
112
|
+
? jsonMethod extends infer _
|
|
113
|
+
? getInput extends infer _
|
|
114
|
+
? jsonInput extends infer _
|
|
115
|
+
? urlEncodedInput extends infer _
|
|
116
|
+
? formDataInput extends infer _
|
|
107
117
|
? jsonErrorOutput extends infer _
|
|
108
118
|
? jsonSuccessOutput extends infer _
|
|
109
119
|
? wsOutput extends infer _
|
|
@@ -111,7 +121,12 @@ async function main(tsconfig\u8DEF\u5F84, \u76EE\u6807\u8DEF\u5F84, \u8F93\u51FA
|
|
|
111
121
|
? {
|
|
112
122
|
path: jsonPath
|
|
113
123
|
method: jsonMethod
|
|
114
|
-
input:
|
|
124
|
+
input: {
|
|
125
|
+
json: 'json' extends keyof jsonInput ? jsonInput['json'] : never
|
|
126
|
+
query: 'query' extends keyof getInput ? getInput['query'] : never
|
|
127
|
+
urlencoded: 'urlencoded' extends keyof urlEncodedInput ? urlEncodedInput['urlencoded'] : never
|
|
128
|
+
form: 'form' extends keyof formDataInput ? formDataInput['form'] : never
|
|
129
|
+
}
|
|
115
130
|
errorOutput: jsonErrorOutput
|
|
116
131
|
successOutput: jsonSuccessOutput
|
|
117
132
|
wsOutput: wsOutput
|
|
@@ -125,9 +140,11 @@ async function main(tsconfig\u8DEF\u5F84, \u76EE\u6807\u8DEF\u5F84, \u8F93\u51FA
|
|
|
125
140
|
: never
|
|
126
141
|
: never
|
|
127
142
|
: never
|
|
143
|
+
: never
|
|
144
|
+
: never
|
|
128
145
|
|
|
129
|
-
|
|
130
|
-
|
|
146
|
+
type \u5BFC\u51FA\u7C7B\u578B\u540D\u79F0 = GetNetCoreExportTypeName<\u5BFC\u5165>
|
|
147
|
+
type \u5BFC\u51FA\u7C7B\u578B\u5B9A\u4E49 = GetNetCoreExportTypeDefine<\u5BFC\u5165>
|
|
131
148
|
`;
|
|
132
149
|
return import_typescript.default.createSourceFile(a.fileName.replaceAll(".ts", "-" + (0, import_node_crypto.randomUUID)() + ".ts"), \u4EE3\u7801, import_typescript.default.ScriptTarget.Latest);
|
|
133
150
|
});
|
|
@@ -190,7 +207,8 @@ async function main(tsconfig\u8DEF\u5F84, \u76EE\u6807\u8DEF\u5F84, \u8F93\u51FA
|
|
|
190
207
|
\u7C7B\u578B\u5B9A\u4E49\u7C7B\u578B = "aliasSymbol";
|
|
191
208
|
\u5BFC\u51FA\u7C7B\u578B\u5B9A\u4E49 = type.aliasSymbol.declarations?.[0]?.getText();
|
|
192
209
|
} else {
|
|
193
|
-
|
|
210
|
+
\u7C7B\u578B\u5B9A\u4E49\u7C7B\u578B = "symbol";
|
|
211
|
+
\u5BFC\u51FA\u7C7B\u578B\u5B9A\u4E49 = \u5B57\u7B26\u4E32\u7ED3\u679C;
|
|
194
212
|
}
|
|
195
213
|
}
|
|
196
214
|
}
|
|
@@ -215,7 +233,8 @@ async function main(tsconfig\u8DEF\u5F84, \u76EE\u6807\u8DEF\u5F84, \u8F93\u51FA
|
|
|
215
233
|
let \u6700\u7EC8\u4EE3\u7801 = [
|
|
216
234
|
`// \u8BE5\u6587\u4EF6\u7531\u811A\u672C\u81EA\u52A8\u751F\u6210, \u8BF7\u52FF\u4FEE\u6539.`,
|
|
217
235
|
...\u6700\u7EC8\u7ED3\u679C_\u5BFC\u51FA\u7C7B\u578B,
|
|
218
|
-
`export type InterfaceType = [${\u6700\u7EC8\u7ED3\u679C_JSON.join(",")}]
|
|
236
|
+
`export type InterfaceType = [${\u6700\u7EC8\u7ED3\u679C_JSON.join(",")}]`,
|
|
237
|
+
""
|
|
219
238
|
];
|
|
220
239
|
await log.debug("\u6700\u7EC8\u4EE3\u7801\u751F\u6210\u5B8C\u6210");
|
|
221
240
|
let \u8F93\u51FA\u6587\u4EF6\u5939 = import_node_path.default.dirname(\u8F93\u51FA\u6587\u4EF6\u8DEF\u5F84);
|
|
@@ -29,11 +29,23 @@ var import_node_path2 = __toESM(require("path"), 1);
|
|
|
29
29
|
|
|
30
30
|
// src/bin/gen-test/index.ts
|
|
31
31
|
var import_ts_log = require("@lsby/ts-log");
|
|
32
|
-
var import_lodash = __toESM(require("lodash"), 1);
|
|
33
32
|
var import_node_crypto = require("crypto");
|
|
34
33
|
var import_node_fs = __toESM(require("fs"), 1);
|
|
35
34
|
var import_node_path = __toESM(require("path"), 1);
|
|
36
35
|
var import_typescript = __toESM(require("typescript"), 1);
|
|
36
|
+
|
|
37
|
+
// src/help/interior.ts
|
|
38
|
+
function \u6570\u7EC4\u5408\u5E76(...\u6570\u7EC4\u4EEC) {
|
|
39
|
+
if (\u6570\u7EC4\u4EEC.length === 0) return [];
|
|
40
|
+
let \u6700\u5927\u957F\u5EA6 = Math.max(...\u6570\u7EC4\u4EEC.map((a) => a.length));
|
|
41
|
+
let \u7ED3\u679C = [];
|
|
42
|
+
for (let i = 0; i < \u6700\u5927\u957F\u5EA6; i++) {
|
|
43
|
+
\u7ED3\u679C.push(\u6570\u7EC4\u4EEC.map((a) => a[i]));
|
|
44
|
+
}
|
|
45
|
+
return \u7ED3\u679C;
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
// src/bin/gen-test/index.ts
|
|
37
49
|
function \u68C0\u67E5\u5B58\u5728\u9ED8\u8BA4\u5BFC\u51FA(\u6E90\u6587\u4EF6) {
|
|
38
50
|
for (let statement of \u6E90\u6587\u4EF6.statements) {
|
|
39
51
|
if (import_typescript.default.isExportAssignment(statement) && (statement.isExportEquals ?? null) === null) {
|
|
@@ -82,10 +94,10 @@ async function main(tsconfig\u8DEF\u5F84, \u76EE\u6807\u8DEF\u5F84, \u8F93\u51FA
|
|
|
82
94
|
await log.debug(`\u7B5B\u9009\u51FA ${\u76F8\u5173\u6E90\u6587\u4EF6\u4EEC.length} \u4E2A\u76F8\u5173\u6E90\u6587\u4EF6`);
|
|
83
95
|
let \u4F34\u968F\u7684\u865A\u62DF\u6587\u4EF6\u4EEC = \u76F8\u5173\u6E90\u6587\u4EF6\u4EEC.map((a) => {
|
|
84
96
|
let \u4EE3\u7801 = [
|
|
85
|
-
`import { \u63A5\u53E3\u6D4B\u8BD5 } from '@lsby/net-core'`,
|
|
97
|
+
`import { \u4EFB\u610F\u63A5\u53E3\u6D4B\u8BD5, \u63A5\u53E3\u903B\u8F91\u6D4B\u8BD5 } from '@lsby/net-core'`,
|
|
86
98
|
`import \u5BFC\u5165 from "./${a.fileName.split("/").at(-1)?.replaceAll(".ts", "")}"`,
|
|
87
99
|
``,
|
|
88
|
-
`type \u8BA1\u7B97\u7ED3\u679C = typeof \u5BFC\u5165 extends \u63A5\u53E3\u6D4B\u8BD5 ? true : false`
|
|
100
|
+
`type \u8BA1\u7B97\u7ED3\u679C = typeof \u5BFC\u5165 extends \u4EFB\u610F\u63A5\u53E3\u6D4B\u8BD5 ? true : typeof \u5BFC\u5165 extends \u63A5\u53E3\u903B\u8F91\u6D4B\u8BD5 ? true : false`
|
|
89
101
|
];
|
|
90
102
|
return import_typescript.default.createSourceFile(
|
|
91
103
|
a.fileName.replaceAll(".ts", "-" + (0, import_node_crypto.randomUUID)() + ".ts"),
|
|
@@ -119,7 +131,7 @@ async function main(tsconfig\u8DEF\u5F84, \u76EE\u6807\u8DEF\u5F84, \u8F93\u51FA
|
|
|
119
131
|
});
|
|
120
132
|
\u68C0\u67E5\u7ED3\u679C.push(\u7ED3\u679C);
|
|
121
133
|
}
|
|
122
|
-
let \u6700\u7EC8\u7ED3\u679C =
|
|
134
|
+
let \u6700\u7EC8\u7ED3\u679C = \u6570\u7EC4\u5408\u5E76(\u76F8\u5173\u6E90\u6587\u4EF6\u4EEC, \u68C0\u67E5\u7ED3\u679C).filter((a) => a[1] === true).map((a) => a[0]);
|
|
123
135
|
await log.debug(`\u6700\u7EC8\u7B5B\u9009\u51FA ${\u6700\u7EC8\u7ED3\u679C.length} \u4E2A\u6D4B\u8BD5\u7528\u4F8B`);
|
|
124
136
|
let \u6700\u7EC8\u4EE3\u7801 = [
|
|
125
137
|
`// \u8BE5\u6587\u4EF6\u7531\u811A\u672C\u81EA\u52A8\u751F\u6210, \u8BF7\u52FF\u4FEE\u6539.`,
|
|
@@ -34,11 +34,23 @@ __export(gen_test_exports, {
|
|
|
34
34
|
});
|
|
35
35
|
module.exports = __toCommonJS(gen_test_exports);
|
|
36
36
|
var import_ts_log = require("@lsby/ts-log");
|
|
37
|
-
var import_lodash = __toESM(require("lodash"), 1);
|
|
38
37
|
var import_node_crypto = require("crypto");
|
|
39
38
|
var import_node_fs = __toESM(require("fs"), 1);
|
|
40
39
|
var import_node_path = __toESM(require("path"), 1);
|
|
41
40
|
var import_typescript = __toESM(require("typescript"), 1);
|
|
41
|
+
|
|
42
|
+
// src/help/interior.ts
|
|
43
|
+
function \u6570\u7EC4\u5408\u5E76(...\u6570\u7EC4\u4EEC) {
|
|
44
|
+
if (\u6570\u7EC4\u4EEC.length === 0) return [];
|
|
45
|
+
let \u6700\u5927\u957F\u5EA6 = Math.max(...\u6570\u7EC4\u4EEC.map((a) => a.length));
|
|
46
|
+
let \u7ED3\u679C = [];
|
|
47
|
+
for (let i = 0; i < \u6700\u5927\u957F\u5EA6; i++) {
|
|
48
|
+
\u7ED3\u679C.push(\u6570\u7EC4\u4EEC.map((a) => a[i]));
|
|
49
|
+
}
|
|
50
|
+
return \u7ED3\u679C;
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
// src/bin/gen-test/index.ts
|
|
42
54
|
function \u68C0\u67E5\u5B58\u5728\u9ED8\u8BA4\u5BFC\u51FA(\u6E90\u6587\u4EF6) {
|
|
43
55
|
for (let statement of \u6E90\u6587\u4EF6.statements) {
|
|
44
56
|
if (import_typescript.default.isExportAssignment(statement) && (statement.isExportEquals ?? null) === null) {
|
|
@@ -87,10 +99,10 @@ async function main(tsconfig\u8DEF\u5F84, \u76EE\u6807\u8DEF\u5F84, \u8F93\u51FA
|
|
|
87
99
|
await log.debug(`\u7B5B\u9009\u51FA ${\u76F8\u5173\u6E90\u6587\u4EF6\u4EEC.length} \u4E2A\u76F8\u5173\u6E90\u6587\u4EF6`);
|
|
88
100
|
let \u4F34\u968F\u7684\u865A\u62DF\u6587\u4EF6\u4EEC = \u76F8\u5173\u6E90\u6587\u4EF6\u4EEC.map((a) => {
|
|
89
101
|
let \u4EE3\u7801 = [
|
|
90
|
-
`import { \u63A5\u53E3\u6D4B\u8BD5 } from '@lsby/net-core'`,
|
|
102
|
+
`import { \u4EFB\u610F\u63A5\u53E3\u6D4B\u8BD5, \u63A5\u53E3\u903B\u8F91\u6D4B\u8BD5 } from '@lsby/net-core'`,
|
|
91
103
|
`import \u5BFC\u5165 from "./${a.fileName.split("/").at(-1)?.replaceAll(".ts", "")}"`,
|
|
92
104
|
``,
|
|
93
|
-
`type \u8BA1\u7B97\u7ED3\u679C = typeof \u5BFC\u5165 extends \u63A5\u53E3\u6D4B\u8BD5 ? true : false`
|
|
105
|
+
`type \u8BA1\u7B97\u7ED3\u679C = typeof \u5BFC\u5165 extends \u4EFB\u610F\u63A5\u53E3\u6D4B\u8BD5 ? true : typeof \u5BFC\u5165 extends \u63A5\u53E3\u903B\u8F91\u6D4B\u8BD5 ? true : false`
|
|
94
106
|
];
|
|
95
107
|
return import_typescript.default.createSourceFile(
|
|
96
108
|
a.fileName.replaceAll(".ts", "-" + (0, import_node_crypto.randomUUID)() + ".ts"),
|
|
@@ -124,7 +136,7 @@ async function main(tsconfig\u8DEF\u5F84, \u76EE\u6807\u8DEF\u5F84, \u8F93\u51FA
|
|
|
124
136
|
});
|
|
125
137
|
\u68C0\u67E5\u7ED3\u679C.push(\u7ED3\u679C);
|
|
126
138
|
}
|
|
127
|
-
let \u6700\u7EC8\u7ED3\u679C =
|
|
139
|
+
let \u6700\u7EC8\u7ED3\u679C = \u6570\u7EC4\u5408\u5E76(\u76F8\u5173\u6E90\u6587\u4EF6\u4EEC, \u68C0\u67E5\u7ED3\u679C).filter((a) => a[1] === true).map((a) => a[0]);
|
|
128
140
|
await log.debug(`\u6700\u7EC8\u7B5B\u9009\u51FA ${\u6700\u7EC8\u7ED3\u679C.length} \u4E2A\u6D4B\u8BD5\u7528\u4F8B`);
|
|
129
141
|
let \u6700\u7EC8\u4EE3\u7801 = [
|
|
130
142
|
`// \u8BE5\u6587\u4EF6\u7531\u811A\u672C\u81EA\u52A8\u751F\u6210, \u8BF7\u52FF\u4FEE\u6539.`,
|
|
@@ -0,0 +1,31 @@
|
|
|
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/global/log.ts
|
|
21
|
+
var log_exports = {};
|
|
22
|
+
__export(log_exports, {
|
|
23
|
+
\u5168\u5C40\u65E5\u5FD7\u5355\u4F8B: () => \u5168\u5C40\u65E5\u5FD7\u5355\u4F8B
|
|
24
|
+
});
|
|
25
|
+
module.exports = __toCommonJS(log_exports);
|
|
26
|
+
var import_ts_log = require("@lsby/ts-log");
|
|
27
|
+
var \u5168\u5C40\u65E5\u5FD7\u5355\u4F8B = new import_ts_log.Log("@lsby:net-core");
|
|
28
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
29
|
+
0 && (module.exports = {
|
|
30
|
+
\u5168\u5C40\u65E5\u5FD7\u5355\u4F8B
|
|
31
|
+
});
|
|
@@ -0,0 +1,84 @@
|
|
|
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/global/model/hub.ts
|
|
21
|
+
var hub_exports = {};
|
|
22
|
+
__export(hub_exports, {
|
|
23
|
+
\u96C6\u7EBF\u5668\u6A21\u578B: () => \u96C6\u7EBF\u5668\u6A21\u578B,
|
|
24
|
+
\u96C6\u7EBF\u5668\u76D1\u542C\u5668\u6301\u6709\u8005: () => \u96C6\u7EBF\u5668\u76D1\u542C\u5668\u6301\u6709\u8005
|
|
25
|
+
});
|
|
26
|
+
module.exports = __toCommonJS(hub_exports);
|
|
27
|
+
var \u96C6\u7EBF\u5668\u76D1\u542C\u5668\u6301\u6709\u8005 = class {
|
|
28
|
+
constructor(\u76D1\u542C\u5668) {
|
|
29
|
+
this.\u76D1\u542C\u5668 = \u76D1\u542C\u5668;
|
|
30
|
+
}
|
|
31
|
+
};
|
|
32
|
+
var \u96C6\u7EBF\u5668\u6A21\u578B = class _\u96C6\u7EBF\u5668\u6A21\u578B {
|
|
33
|
+
// 使用 WeakRef + FinalizationRegistry 防止"反向持有" this
|
|
34
|
+
static \u6E05\u7406\u6CE8\u518C\u5668 = new FinalizationRegistry(({ \u5B9E\u4F8B\u5F15\u7528, \u76D1\u542C\u5668 }) => {
|
|
35
|
+
let \u5B9E\u4F8B = \u5B9E\u4F8B\u5F15\u7528.deref();
|
|
36
|
+
if (\u5B9E\u4F8B === void 0) return;
|
|
37
|
+
let \u7D22\u5F15 = \u5B9E\u4F8B.\u76D1\u542C\u5668\u5217\u8868.indexOf(\u76D1\u542C\u5668);
|
|
38
|
+
if (\u7D22\u5F15 !== -1) \u5B9E\u4F8B.\u76D1\u542C\u5668\u5217\u8868.splice(\u7D22\u5F15, 1);
|
|
39
|
+
});
|
|
40
|
+
\u76D1\u542C\u5668\u5217\u8868 = [];
|
|
41
|
+
\u6301\u6709\u8005\u6620\u5C04 = /* @__PURE__ */ new WeakMap();
|
|
42
|
+
\u9519\u8BEF\u5904\u7406\u5668 = null;
|
|
43
|
+
/**
|
|
44
|
+
* 设置广播错误时的处理器。
|
|
45
|
+
*/
|
|
46
|
+
\u8BBE\u7F6E\u9519\u8BEF\u5904\u7406\u5668(\u5904\u7406\u5668) {
|
|
47
|
+
this.\u9519\u8BEF\u5904\u7406\u5668 = \u5904\u7406\u5668;
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* 注册监听器。
|
|
51
|
+
* 若外部不再持有返回的 `监听器持有者`,监听器会在未来某个时间自动移除。
|
|
52
|
+
* ⚠️ 自动清理是非确定性的,不能依赖它实现实时释放。
|
|
53
|
+
*/
|
|
54
|
+
\u6DFB\u52A0\u76D1\u542C\u5668(\u76D1\u542C\u5668) {
|
|
55
|
+
this.\u76D1\u542C\u5668\u5217\u8868.push(\u76D1\u542C\u5668);
|
|
56
|
+
let \u6301\u6709\u8005 = new \u96C6\u7EBF\u5668\u76D1\u542C\u5668\u6301\u6709\u8005(\u76D1\u542C\u5668);
|
|
57
|
+
this.\u6301\u6709\u8005\u6620\u5C04.set(\u6301\u6709\u8005, \u76D1\u542C\u5668);
|
|
58
|
+
let \u5B9E\u4F8B\u5F31\u5F15\u7528 = new WeakRef(this);
|
|
59
|
+
_\u96C6\u7EBF\u5668\u6A21\u578B.\u6E05\u7406\u6CE8\u518C\u5668.register(\u6301\u6709\u8005, { \u5B9E\u4F8B\u5F15\u7528: \u5B9E\u4F8B\u5F31\u5F15\u7528, \u76D1\u542C\u5668 }, \u6301\u6709\u8005);
|
|
60
|
+
return \u6301\u6709\u8005;
|
|
61
|
+
}
|
|
62
|
+
\u79FB\u9664\u76D1\u542C\u5668(\u6301\u6709\u8005) {
|
|
63
|
+
let \u76D1\u542C\u5668 = this.\u6301\u6709\u8005\u6620\u5C04.get(\u6301\u6709\u8005);
|
|
64
|
+
if (\u76D1\u542C\u5668 === void 0) return;
|
|
65
|
+
let \u7D22\u5F15 = this.\u76D1\u542C\u5668\u5217\u8868.indexOf(\u76D1\u542C\u5668);
|
|
66
|
+
if (\u7D22\u5F15 !== -1) this.\u76D1\u542C\u5668\u5217\u8868.splice(\u7D22\u5F15, 1);
|
|
67
|
+
_\u96C6\u7EBF\u5668\u6A21\u578B.\u6E05\u7406\u6CE8\u518C\u5668.unregister(\u6301\u6709\u8005);
|
|
68
|
+
this.\u6301\u6709\u8005\u6620\u5C04.delete(\u6301\u6709\u8005);
|
|
69
|
+
}
|
|
70
|
+
async \u5E7F\u64AD(\u6570\u636E) {
|
|
71
|
+
let snapshot = [...this.\u76D1\u542C\u5668\u5217\u8868];
|
|
72
|
+
let \u7ED3\u679C = await Promise.allSettled(snapshot.map((l) => l(\u6570\u636E)));
|
|
73
|
+
for (let [\u7D22\u5F15, \u7ED3\u679C\u9879] of \u7ED3\u679C.entries()) {
|
|
74
|
+
if (\u7ED3\u679C\u9879.status === "rejected" && this.\u9519\u8BEF\u5904\u7406\u5668 !== null) {
|
|
75
|
+
await Promise.resolve(this.\u9519\u8BEF\u5904\u7406\u5668(\u6570\u636E, \u7D22\u5F15, \u7ED3\u679C\u9879.reason));
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
};
|
|
80
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
81
|
+
0 && (module.exports = {
|
|
82
|
+
\u96C6\u7EBF\u5668\u6A21\u578B,
|
|
83
|
+
\u96C6\u7EBF\u5668\u76D1\u542C\u5668\u6301\u6709\u8005
|
|
84
|
+
});
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
type 集线器监听器<T> = (数据: T) => Promise<void>;
|
|
2
|
+
type 广播错误处理<T> = (数据: T, 索引: number, 错误: unknown) => Promise<void> | void;
|
|
3
|
+
declare class 集线器监听器持有者<T> {
|
|
4
|
+
readonly 监听器: 集线器监听器<T>;
|
|
5
|
+
constructor(监听器: 集线器监听器<T>);
|
|
6
|
+
}
|
|
7
|
+
declare class 集线器模型<T> {
|
|
8
|
+
private static 清理注册器;
|
|
9
|
+
private 监听器列表;
|
|
10
|
+
private 持有者映射;
|
|
11
|
+
private 错误处理器;
|
|
12
|
+
/**
|
|
13
|
+
* 设置广播错误时的处理器。
|
|
14
|
+
*/
|
|
15
|
+
设置错误处理器(处理器: 广播错误处理<T>): void;
|
|
16
|
+
/**
|
|
17
|
+
* 注册监听器。
|
|
18
|
+
* 若外部不再持有返回的 `监听器持有者`,监听器会在未来某个时间自动移除。
|
|
19
|
+
* ⚠️ 自动清理是非确定性的,不能依赖它实现实时释放。
|
|
20
|
+
*/
|
|
21
|
+
添加监听器(监听器: 集线器监听器<T>): 集线器监听器持有者<T>;
|
|
22
|
+
移除监听器(持有者: 集线器监听器持有者<T>): void;
|
|
23
|
+
广播(数据: T): Promise<void>;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
export { type 广播错误处理, 集线器模型, type 集线器监听器, 集线器监听器持有者 };
|
|
@@ -0,0 +1,166 @@
|
|
|
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/global/model/web-socket.ts
|
|
21
|
+
var web_socket_exports = {};
|
|
22
|
+
__export(web_socket_exports, {
|
|
23
|
+
WebSocket\u7BA1\u7406\u5668: () => WebSocket\u7BA1\u7406\u5668
|
|
24
|
+
});
|
|
25
|
+
module.exports = __toCommonJS(web_socket_exports);
|
|
26
|
+
|
|
27
|
+
// src/global/log.ts
|
|
28
|
+
var import_ts_log = require("@lsby/ts-log");
|
|
29
|
+
var \u5168\u5C40\u65E5\u5FD7\u5355\u4F8B = new import_ts_log.Log("@lsby:net-core");
|
|
30
|
+
|
|
31
|
+
// src/global/model/hub.ts
|
|
32
|
+
var \u96C6\u7EBF\u5668\u76D1\u542C\u5668\u6301\u6709\u8005 = class {
|
|
33
|
+
constructor(\u76D1\u542C\u5668) {
|
|
34
|
+
this.\u76D1\u542C\u5668 = \u76D1\u542C\u5668;
|
|
35
|
+
}
|
|
36
|
+
};
|
|
37
|
+
var \u96C6\u7EBF\u5668\u6A21\u578B = class _\u96C6\u7EBF\u5668\u6A21\u578B {
|
|
38
|
+
// 使用 WeakRef + FinalizationRegistry 防止"反向持有" this
|
|
39
|
+
static \u6E05\u7406\u6CE8\u518C\u5668 = new FinalizationRegistry(({ \u5B9E\u4F8B\u5F15\u7528, \u76D1\u542C\u5668 }) => {
|
|
40
|
+
let \u5B9E\u4F8B = \u5B9E\u4F8B\u5F15\u7528.deref();
|
|
41
|
+
if (\u5B9E\u4F8B === void 0) return;
|
|
42
|
+
let \u7D22\u5F15 = \u5B9E\u4F8B.\u76D1\u542C\u5668\u5217\u8868.indexOf(\u76D1\u542C\u5668);
|
|
43
|
+
if (\u7D22\u5F15 !== -1) \u5B9E\u4F8B.\u76D1\u542C\u5668\u5217\u8868.splice(\u7D22\u5F15, 1);
|
|
44
|
+
});
|
|
45
|
+
\u76D1\u542C\u5668\u5217\u8868 = [];
|
|
46
|
+
\u6301\u6709\u8005\u6620\u5C04 = /* @__PURE__ */ new WeakMap();
|
|
47
|
+
\u9519\u8BEF\u5904\u7406\u5668 = null;
|
|
48
|
+
/**
|
|
49
|
+
* 设置广播错误时的处理器。
|
|
50
|
+
*/
|
|
51
|
+
\u8BBE\u7F6E\u9519\u8BEF\u5904\u7406\u5668(\u5904\u7406\u5668) {
|
|
52
|
+
this.\u9519\u8BEF\u5904\u7406\u5668 = \u5904\u7406\u5668;
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* 注册监听器。
|
|
56
|
+
* 若外部不再持有返回的 `监听器持有者`,监听器会在未来某个时间自动移除。
|
|
57
|
+
* ⚠️ 自动清理是非确定性的,不能依赖它实现实时释放。
|
|
58
|
+
*/
|
|
59
|
+
\u6DFB\u52A0\u76D1\u542C\u5668(\u76D1\u542C\u5668) {
|
|
60
|
+
this.\u76D1\u542C\u5668\u5217\u8868.push(\u76D1\u542C\u5668);
|
|
61
|
+
let \u6301\u6709\u8005 = new \u96C6\u7EBF\u5668\u76D1\u542C\u5668\u6301\u6709\u8005(\u76D1\u542C\u5668);
|
|
62
|
+
this.\u6301\u6709\u8005\u6620\u5C04.set(\u6301\u6709\u8005, \u76D1\u542C\u5668);
|
|
63
|
+
let \u5B9E\u4F8B\u5F31\u5F15\u7528 = new WeakRef(this);
|
|
64
|
+
_\u96C6\u7EBF\u5668\u6A21\u578B.\u6E05\u7406\u6CE8\u518C\u5668.register(\u6301\u6709\u8005, { \u5B9E\u4F8B\u5F15\u7528: \u5B9E\u4F8B\u5F31\u5F15\u7528, \u76D1\u542C\u5668 }, \u6301\u6709\u8005);
|
|
65
|
+
return \u6301\u6709\u8005;
|
|
66
|
+
}
|
|
67
|
+
\u79FB\u9664\u76D1\u542C\u5668(\u6301\u6709\u8005) {
|
|
68
|
+
let \u76D1\u542C\u5668 = this.\u6301\u6709\u8005\u6620\u5C04.get(\u6301\u6709\u8005);
|
|
69
|
+
if (\u76D1\u542C\u5668 === void 0) return;
|
|
70
|
+
let \u7D22\u5F15 = this.\u76D1\u542C\u5668\u5217\u8868.indexOf(\u76D1\u542C\u5668);
|
|
71
|
+
if (\u7D22\u5F15 !== -1) this.\u76D1\u542C\u5668\u5217\u8868.splice(\u7D22\u5F15, 1);
|
|
72
|
+
_\u96C6\u7EBF\u5668\u6A21\u578B.\u6E05\u7406\u6CE8\u518C\u5668.unregister(\u6301\u6709\u8005);
|
|
73
|
+
this.\u6301\u6709\u8005\u6620\u5C04.delete(\u6301\u6709\u8005);
|
|
74
|
+
}
|
|
75
|
+
async \u5E7F\u64AD(\u6570\u636E) {
|
|
76
|
+
let snapshot = [...this.\u76D1\u542C\u5668\u5217\u8868];
|
|
77
|
+
let \u7ED3\u679C = await Promise.allSettled(snapshot.map((l) => l(\u6570\u636E)));
|
|
78
|
+
for (let [\u7D22\u5F15, \u7ED3\u679C\u9879] of \u7ED3\u679C.entries()) {
|
|
79
|
+
if (\u7ED3\u679C\u9879.status === "rejected" && this.\u9519\u8BEF\u5904\u7406\u5668 !== null) {
|
|
80
|
+
await Promise.resolve(this.\u9519\u8BEF\u5904\u7406\u5668(\u6570\u636E, \u7D22\u5F15, \u7ED3\u679C\u9879.reason));
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
};
|
|
85
|
+
|
|
86
|
+
// src/global/model/web-socket.ts
|
|
87
|
+
var WebSocket\u7BA1\u7406\u5668 = class {
|
|
88
|
+
log = \u5168\u5C40\u65E5\u5FD7\u5355\u4F8B.extend("WebSocket\u7BA1\u7406\u5668");
|
|
89
|
+
\u8FDE\u63A5\u8868 = {};
|
|
90
|
+
\u6D88\u606F\u76D1\u542C\u8868 = {};
|
|
91
|
+
\u8FDE\u63A5\u6E05\u7406\u6A21\u578B = new \u96C6\u7EBF\u5668\u6A21\u578B();
|
|
92
|
+
\u8FDE\u63A5\u6301\u6709\u8005\u8868 = {};
|
|
93
|
+
\u6E05\u7406\u51FD\u6570\u8868 = {};
|
|
94
|
+
\u589E\u52A0\u8FDE\u63A5(id, ws\u53E5\u67C4) {
|
|
95
|
+
if (id in this.\u8FDE\u63A5\u8868) this.\u5220\u9664\u8FDE\u63A5(id);
|
|
96
|
+
this.\u8FDE\u63A5\u8868[id] = ws\u53E5\u67C4;
|
|
97
|
+
if (!(id in this.\u6D88\u606F\u76D1\u542C\u8868)) {
|
|
98
|
+
let \u6A21\u578B = new \u96C6\u7EBF\u5668\u6A21\u578B();
|
|
99
|
+
\u6A21\u578B.\u8BBE\u7F6E\u9519\u8BEF\u5904\u7406\u5668(async (\u6570\u636E, \u7D22\u5F15, \u9519\u8BEF) => {
|
|
100
|
+
await this.log.warn(`WebSocket \u76D1\u542C\u5668\u6267\u884C\u5931\u8D25, id: ${id}, \u7D22\u5F15: ${\u7D22\u5F15}, \u9519\u8BEF: ${\u9519\u8BEF}`);
|
|
101
|
+
});
|
|
102
|
+
this.\u6D88\u606F\u76D1\u542C\u8868[id] = \u6A21\u578B;
|
|
103
|
+
}
|
|
104
|
+
this.\u6CE8\u518Conmessage(id, ws\u53E5\u67C4);
|
|
105
|
+
let \u6301\u6709\u8005 = this.\u8FDE\u63A5\u6E05\u7406\u6A21\u578B.\u6DFB\u52A0\u76D1\u542C\u5668(async () => {
|
|
106
|
+
if (id in this.\u8FDE\u63A5\u8868) this.\u5220\u9664\u8FDE\u63A5(id);
|
|
107
|
+
});
|
|
108
|
+
this.\u8FDE\u63A5\u6301\u6709\u8005\u8868[id] = \u6301\u6709\u8005;
|
|
109
|
+
return \u6301\u6709\u8005;
|
|
110
|
+
}
|
|
111
|
+
\u5220\u9664\u8FDE\u63A5(id) {
|
|
112
|
+
let ws = this.\u8FDE\u63A5\u8868[id];
|
|
113
|
+
if (ws !== null && ws !== void 0) {
|
|
114
|
+
ws.onmessage = null;
|
|
115
|
+
ws.once("error", (err) => void this.log.error(`WebSocket \u5F02\u6B65\u9519\u8BEF, id: ${id}, \u9519\u8BEF: ${err}`));
|
|
116
|
+
ws.once(
|
|
117
|
+
"close",
|
|
118
|
+
(code, reason) => void this.log.debug(`WebSocket \u5DF2\u5173\u95ED, id: ${id}, \u5173\u95ED\u7801: ${code}, \u539F\u56E0: ${reason}`)
|
|
119
|
+
);
|
|
120
|
+
try {
|
|
121
|
+
ws.close(1e3, "\u670D\u52A1\u5668\u4E3B\u52A8\u5173\u95ED");
|
|
122
|
+
} catch (err) {
|
|
123
|
+
void this.log.error(`WebSocket \u540C\u6B65\u5173\u95ED\u5931\u8D25, id: ${id}, \u9519\u8BEF: ${err}`);
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
let \u6E05\u7406\u51FD\u6570 = this.\u6E05\u7406\u51FD\u6570\u8868[id];
|
|
127
|
+
if (\u6E05\u7406\u51FD\u6570 !== void 0) void \u6E05\u7406\u51FD\u6570().catch((err) => this.log.error(`\u6E05\u7406\u8FDE\u63A5\u5931\u8D25, id: ${id}, \u9519\u8BEF: ${err}`));
|
|
128
|
+
delete this.\u8FDE\u63A5\u8868[id];
|
|
129
|
+
delete this.\u6E05\u7406\u51FD\u6570\u8868[id];
|
|
130
|
+
delete this.\u6D88\u606F\u76D1\u542C\u8868[id];
|
|
131
|
+
let \u6301\u6709\u8005 = this.\u8FDE\u63A5\u6301\u6709\u8005\u8868[id];
|
|
132
|
+
if (\u6301\u6709\u8005 !== void 0) {
|
|
133
|
+
this.\u8FDE\u63A5\u6E05\u7406\u6A21\u578B.\u79FB\u9664\u76D1\u542C\u5668(\u6301\u6709\u8005);
|
|
134
|
+
delete this.\u8FDE\u63A5\u6301\u6709\u8005\u8868[id];
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
\u6CE8\u518Conmessage(id, ws\u53E5\u67C4) {
|
|
138
|
+
ws\u53E5\u67C4.onmessage = async (event) => {
|
|
139
|
+
try {
|
|
140
|
+
let \u6570\u636E = JSON.parse(event.data.toString());
|
|
141
|
+
let \u6A21\u578B = this.\u6D88\u606F\u76D1\u542C\u8868[id];
|
|
142
|
+
if (\u6A21\u578B !== void 0) await \u6A21\u578B.\u5E7F\u64AD(\u6570\u636E);
|
|
143
|
+
} catch (err) {
|
|
144
|
+
await this.log.warn(`WebSocket \u6D88\u606F\u5904\u7406\u5931\u8D25, id: ${id}, \u9519\u8BEF: ${err}`);
|
|
145
|
+
}
|
|
146
|
+
};
|
|
147
|
+
}
|
|
148
|
+
\u67E5\u8BE2\u8FDE\u63A5\u5B58\u5728(id) {
|
|
149
|
+
return id in this.\u8FDE\u63A5\u8868;
|
|
150
|
+
}
|
|
151
|
+
async \u83B7\u5F97ws\u53E5\u67C4(id) {
|
|
152
|
+
return this.\u8FDE\u63A5\u8868[id] ?? null;
|
|
153
|
+
}
|
|
154
|
+
async \u8BBE\u7F6E\u6E05\u7406\u51FD\u6570(id, \u6E05\u7406\u51FD\u6570) {
|
|
155
|
+
if (id in this.\u8FDE\u63A5\u8868) this.\u6E05\u7406\u51FD\u6570\u8868[id] = \u6E05\u7406\u51FD\u6570;
|
|
156
|
+
}
|
|
157
|
+
\u8BBE\u7F6E\u6D88\u606F\u76D1\u542C(id, \u56DE\u8C03\u51FD\u6570) {
|
|
158
|
+
let \u6A21\u578B = this.\u6D88\u606F\u76D1\u542C\u8868[id];
|
|
159
|
+
if (\u6A21\u578B === void 0) return null;
|
|
160
|
+
return \u6A21\u578B.\u6DFB\u52A0\u76D1\u542C\u5668(\u56DE\u8C03\u51FD\u6570);
|
|
161
|
+
}
|
|
162
|
+
};
|
|
163
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
164
|
+
0 && (module.exports = {
|
|
165
|
+
WebSocket\u7BA1\u7406\u5668
|
|
166
|
+
});
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { WebSocket } from 'ws';
|
|
2
|
+
import { 集线器监听器持有者 as _________ } from './hub.cjs';
|
|
3
|
+
|
|
4
|
+
type id = string;
|
|
5
|
+
declare class WebSocket管理器 {
|
|
6
|
+
private log;
|
|
7
|
+
private 连接表;
|
|
8
|
+
private 消息监听表;
|
|
9
|
+
private 连接清理模型;
|
|
10
|
+
private 连接持有者表;
|
|
11
|
+
private 清理函数表;
|
|
12
|
+
增加连接(id: id, ws句柄: WebSocket): _________<void>;
|
|
13
|
+
删除连接(id: string): void;
|
|
14
|
+
private 注册onmessage;
|
|
15
|
+
查询连接存在(id: string): boolean;
|
|
16
|
+
获得ws句柄(id: id): Promise<WebSocket | null>;
|
|
17
|
+
设置清理函数(id: string, 清理函数: () => Promise<void>): Promise<void>;
|
|
18
|
+
设置消息监听(id: string, 回调函数: (数据: any) => Promise<void>): _________<unknown> | null;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
export { WebSocket管理器 };
|