@lsby/net-core 0.11.2 → 0.13.3
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 +60 -43
- package/dist/bin/gen-api-type/index.cjs +60 -43
- 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 +60 -43
- package/dist/cjs/bin/gen-api-type/index.cjs +60 -43
- 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 +672 -454
- package/dist/cjs/index.d.cts +27 -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} +24 -20
- 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 +187 -139
- 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-B5DKJ5AV.js → chunk-6OPO4OWK.js} +60 -43
- package/dist/esm/{chunk-C5FED6EO.js → chunk-7GT72IUT.js} +34 -16
- package/dist/esm/chunk-7OU27OBO.js +14 -0
- package/dist/esm/chunk-7S6SPW32.js +35 -0
- package/dist/esm/{chunk-NRUNCIP7.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-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-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 +27 -18
- package/dist/esm/index.js +63 -59
- 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 +42 -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 -91
- package/dist/cjs/global/global.d.cts +0 -21
- package/dist/cjs/interface/interface-result.cjs +0 -65
- 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 -168
- package/dist/cjs/plugin/extend/web-socket.d.cts +0 -27
- package/dist/cjs/plugin/plug.d.cts +0 -8
- package/dist/cjs/wrapper/common-wrapper-return.cjs +0 -106
- package/dist/cjs/wrapper/common-wrapper-return.d.cts +0 -29
- package/dist/cjs/wrapper/common-wrapper.cjs +0 -102
- package/dist/cjs/wrapper/common-wrapper.d.cts +0 -27
- package/dist/cjs/wrapper/deferred-result-wrapper.cjs +0 -102
- 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 -134
- 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-3XRAG6DM.js +0 -30
- package/dist/esm/chunk-43GZE5YL.js +0 -17
- package/dist/esm/chunk-7MHKNSNT.js +0 -20
- package/dist/esm/chunk-DNJQGD5M.js +0 -39
- package/dist/esm/chunk-H7LZCHCE.js +0 -24
- package/dist/esm/chunk-HDPEZW7H.js +0 -24
- package/dist/esm/chunk-MDUWXEQ7.js +0 -37
- package/dist/esm/chunk-N7TPWCQ5.js +0 -17
- package/dist/esm/chunk-NB2QNDI2.js +0 -24
- package/dist/esm/chunk-NCYHKHIH.js +0 -54
- package/dist/esm/chunk-NJKBRPN7.js +0 -66
- package/dist/esm/chunk-TSDOOGHG.js +0 -37
- package/dist/esm/chunk-UUXGAK5S.js +0 -31
- package/dist/esm/chunk-VMCAX3QH.js +0 -18
- package/dist/esm/chunk-XBAKTT6S.js +0 -23
- package/dist/esm/chunk-XSYZ5A6R.js +0 -61
- package/dist/esm/global/global.d.ts +0 -21
- 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 -27
- 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
|
@@ -1,235 +0,0 @@
|
|
|
1
|
-
import { z } from 'zod';
|
|
2
|
-
import { Either } from '@lsby/ts-fp-data';
|
|
3
|
-
import { Request, Response } from 'express';
|
|
4
|
-
import { 联合转元组 as _____ } from './help/interior.cjs';
|
|
5
|
-
import { Log } from '@lsby/ts-log';
|
|
6
|
-
import * as http from 'node:http';
|
|
7
|
-
import { 接口结果返回器 as _______ } from './interface/interface-retuen.cjs';
|
|
8
|
-
|
|
9
|
-
type 日志回调类型 = (level: 'trace' | 'debug' | 'info' | 'warn' | 'error', namespace: string, content: string) => Promise<void>;
|
|
10
|
-
type 请求附加参数类型 = {
|
|
11
|
-
log: Log;
|
|
12
|
-
请求id: string;
|
|
13
|
-
};
|
|
14
|
-
declare class 服务器 {
|
|
15
|
-
private log;
|
|
16
|
-
private 日志回调?;
|
|
17
|
-
private 接口们;
|
|
18
|
-
private 端口;
|
|
19
|
-
private 静态资源路径;
|
|
20
|
-
private 默认get文件路径;
|
|
21
|
-
constructor(options: {
|
|
22
|
-
接口们: 任意接口[];
|
|
23
|
-
端口: number;
|
|
24
|
-
静态资源路径?: string;
|
|
25
|
-
默认get文件路径?: string;
|
|
26
|
-
日志回调?: 日志回调类型;
|
|
27
|
-
});
|
|
28
|
-
run(): Promise<{
|
|
29
|
-
ip: string[];
|
|
30
|
-
api: string[];
|
|
31
|
-
server: http.Server<typeof http.IncomingMessage, typeof http.ServerResponse>;
|
|
32
|
-
}>;
|
|
33
|
-
private 处理请求;
|
|
34
|
-
private 处理接口逻辑;
|
|
35
|
-
private 初始化WebSocket;
|
|
36
|
-
private 关闭WebSocket连接;
|
|
37
|
-
private 获取本地地址;
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
/**
|
|
41
|
-
* 类似express中的中间件, 做一些前置过程, 例如解析参数, 解析文件等.
|
|
42
|
-
*
|
|
43
|
-
* 可以被注入在"接口逻辑"中, 为其提供前置数据.
|
|
44
|
-
*/
|
|
45
|
-
declare class 插件<Obj extends z.AnyZodObject> {
|
|
46
|
-
private 类型;
|
|
47
|
-
private 实现;
|
|
48
|
-
protected readonly __类型保持符号?: Obj;
|
|
49
|
-
constructor(类型: Obj, 实现: (req: Request, res: Response, 附加参数: 请求附加参数类型) => Promise<z.infer<Obj>>);
|
|
50
|
-
获得类型(): Obj;
|
|
51
|
-
运行(req: Request, res: Response, 附加参数: 请求附加参数类型): Promise<z.infer<Obj>>;
|
|
52
|
-
}
|
|
53
|
-
type 任意插件 = 插件<any>;
|
|
54
|
-
type 插件项类型 = 插件<z.AnyZodObject>;
|
|
55
|
-
type 取插件内部类型<A> = A extends 插件<infer x> ? x : never;
|
|
56
|
-
type 取插件内部ts类型<A> = A extends 插件<infer x> ? z.infer<x> : never;
|
|
57
|
-
type 合并插件结果<Arr extends Array<插件项类型>> = Arr extends [] ? {} : Arr extends [infer x, ...infer xs] ? x extends infer 插件项 ? xs extends Array<插件项类型> ? z.infer<取插件内部类型<插件项>> & 合并插件结果<xs> : {} : {} : {};
|
|
58
|
-
|
|
59
|
-
type 清理函数类型<插件类型 extends 插件项类型[], 逻辑附加参数类型 extends 接口逻辑附加参数类型> = (参数: 合并插件结果<插件类型>, 逻辑附加参数: 逻辑附加参数类型, 请求附加参数: 请求附加参数类型) => Promise<void>;
|
|
60
|
-
type 空对象 = Record<any, never>;
|
|
61
|
-
type 兼容空对象 = Record<any, unknown>;
|
|
62
|
-
type 接口逻辑错误类型 = Record<string, any> | string | never;
|
|
63
|
-
type 接口逻辑正确类型 = Record<string, any>;
|
|
64
|
-
type 接口逻辑附加参数类型 = Record<string, any>;
|
|
65
|
-
/**
|
|
66
|
-
* # 接口逻辑的基础抽象类
|
|
67
|
-
*
|
|
68
|
-
* - 该类表示一个接口的逻辑执行过程, 包括插件的运行, 结果的合并以及业务逻辑的实际执行.
|
|
69
|
-
* - 插件提供预处理功能, 例如参数解析等, 它通过解析express的上下文, 获得结果并提供给实现.
|
|
70
|
-
* - 实现函数负责业务逻辑的主要操作, 例如数据库查询等, 它接收插件的处理结果, 并返回计算结果(用Either表示).
|
|
71
|
-
* - 运行时除了获得express上下文外, 还可以接收自定义参数, 称为`逻辑附加参数`.
|
|
72
|
-
* - 每个接口逻辑实例可以通过一些方法与其他接口逻辑合并, 形成一个复杂的流程.
|
|
73
|
-
*
|
|
74
|
-
* ## 构造:
|
|
75
|
-
*
|
|
76
|
-
* - 可以通过继承该抽象类, 并实现抽象函数来使用.
|
|
77
|
-
* - 也可以通过静态方法`构造`来直接进行构造.
|
|
78
|
-
*
|
|
79
|
-
* ## 组合
|
|
80
|
-
*
|
|
81
|
-
* 通过组合, 可以将简单的逻辑模块化, 并按需构建复杂的接口处理流程.
|
|
82
|
-
*
|
|
83
|
-
* ### 混合
|
|
84
|
-
*
|
|
85
|
-
* - 该类提供了`混合`方法, 用于将多个接口逻辑实例合成一个复合接口逻辑.
|
|
86
|
-
* - 组合的接口逻辑会按顺序依次被调用.
|
|
87
|
-
* - 如果某接口逻辑返回左值, 则整个结构将立即返回该左值.
|
|
88
|
-
* - 否则, 将右值内容注入上下文, 允许之后的接口逻辑通过`逻辑附加参数`访问它.
|
|
89
|
-
* - 最终将返回所有接口的结果的与.
|
|
90
|
-
* - 这类似于monad的do结构, 在该结构中, 每个运行结果都会被注入到全局上下文并消除monad包装, 而语句可以使用上下文的值.
|
|
91
|
-
*
|
|
92
|
-
* ### 其他组合方法用到再写
|
|
93
|
-
*/
|
|
94
|
-
declare abstract class 接口逻辑Base<插件类型 extends 插件项类型[], in 逻辑附加参数类型 extends 接口逻辑附加参数类型, 错误类型 extends 接口逻辑错误类型, 返回类型 extends 接口逻辑正确类型, 上游接口类型 extends 任意接口逻辑 | null = null, 最后接口类型 extends 任意接口逻辑 | null = null> {
|
|
95
|
-
private 上游接口;
|
|
96
|
-
private 最后接口;
|
|
97
|
-
static 空逻辑(): 接口逻辑Base<[], 空对象, never, {}, null, null>;
|
|
98
|
-
static 完整构造<插件类型 extends 插件项类型[], 逻辑附加参数类型 extends 接口逻辑附加参数类型, 错误类型 extends 接口逻辑错误类型, 返回类型 extends 接口逻辑正确类型, 上游接口类型 extends 任意接口逻辑 | null, 最后接口类型 extends 任意接口逻辑 | null>(插件们: [...插件类型], 实现: (参数: 合并插件结果<插件类型>, 逻辑附加参数: 逻辑附加参数类型, 请求附加参数: 请求附加参数类型) => Promise<Either<错误类型, 返回类型>>, 清理函数: 清理函数类型<插件类型, 逻辑附加参数类型> | undefined, 上游接口逻辑: 上游接口类型, 最后接口逻辑: 最后接口类型): 接口逻辑Base<插件类型, 逻辑附加参数类型, 错误类型, 返回类型, 上游接口类型, 最后接口类型>;
|
|
99
|
-
static 构造<插件类型 extends 插件项类型[], 逻辑附加参数类型 extends 接口逻辑附加参数类型, 错误类型 extends 接口逻辑错误类型, 返回类型 extends 接口逻辑正确类型>(插件们: [...插件类型], 实现: (参数: 合并插件结果<插件类型>, 逻辑附加参数: 逻辑附加参数类型, 请求附加参数: 请求附加参数类型) => Promise<Either<错误类型, 返回类型>>, 清理函数?: 清理函数类型<插件类型, 逻辑附加参数类型> | undefined): 接口逻辑Base<插件类型, 逻辑附加参数类型, 错误类型, 返回类型, null, null>;
|
|
100
|
-
protected readonly __类型保持符号_协变?: [插件类型, 错误类型, 返回类型];
|
|
101
|
-
protected readonly __类型保持符号_逆变?: (a: 逻辑附加参数类型) => void;
|
|
102
|
-
constructor(上游接口: 上游接口类型, 最后接口: 最后接口类型);
|
|
103
|
-
计算插件结果(req: Request, res: Response, 请求附加参数: 请求附加参数类型): Promise<合并插件结果<插件类型>>;
|
|
104
|
-
abstract 获得插件们(): [...插件类型];
|
|
105
|
-
abstract 实现(参数: 合并插件结果<插件类型>, 逻辑附加参数: 逻辑附加参数类型, 请求附加参数: 请求附加参数类型): Promise<Either<错误类型, 返回类型>>;
|
|
106
|
-
获得清理函数?(): 清理函数类型<插件类型, 逻辑附加参数类型> | undefined;
|
|
107
|
-
通过插件结果运行(合并插件结果: 合并插件结果<插件类型>, 传入的逻辑附加参数: 逻辑附加参数类型, 传入的请求附加参数: 请求附加参数类型): Promise<Either<错误类型, 返回类型>>;
|
|
108
|
-
运行(req: Request, res: Response, 传入的逻辑附加参数: 逻辑附加参数类型, 传入的插件附加参数: 请求附加参数类型): Promise<Either<错误类型, 返回类型>>;
|
|
109
|
-
混合<输入的插件类型 extends 插件项类型[], 输入的错误类型 extends 接口逻辑错误类型, 输入的返回类型 extends 接口逻辑正确类型, 输入的上游接口逻辑类型 extends 任意接口逻辑 | null, 输入的最后接口逻辑类型 extends 任意接口逻辑 | null>(输入: 接口逻辑Base<输入的插件类型, 返回类型, 输入的错误类型, 输入的返回类型, 输入的上游接口逻辑类型, 输入的最后接口逻辑类型>): 接口逻辑Base<[
|
|
110
|
-
...插件类型,
|
|
111
|
-
...输入的插件类型
|
|
112
|
-
], 逻辑附加参数类型, 错误类型 | 输入的错误类型, 返回类型 & 输入的返回类型, typeof this, typeof 输入>;
|
|
113
|
-
获得上游接口(): 上游接口类型;
|
|
114
|
-
获得最后接口(): 最后接口类型;
|
|
115
|
-
}
|
|
116
|
-
declare abstract class 接口逻辑<插件类型 extends 插件项类型[], 逻辑附加参数类型 extends 接口逻辑附加参数类型, 错误类型 extends 接口逻辑错误类型, 返回类型 extends 接口逻辑正确类型> extends 接口逻辑Base<插件类型, 逻辑附加参数类型, 错误类型, 返回类型, null, null> {
|
|
117
|
-
constructor();
|
|
118
|
-
}
|
|
119
|
-
type 任意接口逻辑 = 接口逻辑Base<any, any, any, any, any, any>;
|
|
120
|
-
type 可调用接口逻辑 = 接口逻辑Base<any, 空对象, any, any, any, any>;
|
|
121
|
-
type 获得接口逻辑插件类型<A> = A extends 接口逻辑Base<infer X, any, any, any, any, any> ? X : never;
|
|
122
|
-
type 获得接口逻辑附加参数类型<A> = A extends 接口逻辑Base<any, infer X, any, any, any, any> ? X : never;
|
|
123
|
-
type 获得接口逻辑错误类型<A> = A extends 接口逻辑Base<any, any, infer X, any, any, any> ? X : never;
|
|
124
|
-
type 获得接口逻辑正确类型<A> = A extends 接口逻辑Base<any, any, any, infer X, any, any> ? X : never;
|
|
125
|
-
type 获得接口逻辑上游接口类型<A> = A extends 接口逻辑Base<any, any, any, any, infer X, any> ? X : never;
|
|
126
|
-
type 获得接口逻辑最后接口类型<A> = A extends 接口逻辑Base<any, any, any, any, any, infer X> ? X : never;
|
|
127
|
-
type 计算接口逻辑参数<接口逻辑> = 合并插件结果<获得接口逻辑插件类型<接口逻辑>>;
|
|
128
|
-
type 计算接口逻辑错误结果<接口逻辑> = _____<获得接口逻辑错误类型<接口逻辑>>;
|
|
129
|
-
type 计算接口逻辑正确结果<接口逻辑> = {
|
|
130
|
-
[k in keyof 获得接口逻辑正确类型<接口逻辑>]: 获得接口逻辑正确类型<接口逻辑>[k];
|
|
131
|
-
};
|
|
132
|
-
|
|
133
|
-
/**
|
|
134
|
-
* 描述接口逻辑返回的数据将以何种形式返回给前端.
|
|
135
|
-
*/
|
|
136
|
-
declare abstract class 接口结果转换器<实现错误类型 extends 接口逻辑错误类型, 实现正确类型 extends 接口逻辑正确类型, 接口错误形式, 接口正确形式> {
|
|
137
|
-
protected readonly __类型保持符号?: [实现错误类型, 实现正确类型, 接口错误形式, 接口正确形式];
|
|
138
|
-
abstract 实现(数据: Either<实现错误类型, 实现正确类型>): 接口错误形式 | 接口正确形式;
|
|
139
|
-
}
|
|
140
|
-
type 任意接口结果转换器 = 接口结果转换器<any, any, any, any>;
|
|
141
|
-
/**
|
|
142
|
-
* 常用形式转换器
|
|
143
|
-
*
|
|
144
|
-
* 将业务逻辑返回的 Either<错误, 成功> 转换为前端友好的统一格式:
|
|
145
|
-
* - 成功时: { status: 'success', data: ... }
|
|
146
|
-
* - 失败时: { status: 'fail', data: ... }
|
|
147
|
-
*
|
|
148
|
-
* 这种格式让前端可以通过 status 字段统一判断请求是否成功
|
|
149
|
-
*/
|
|
150
|
-
declare class 常用形式转换器<实现错误类型 extends 接口逻辑错误类型, 实现正确类型 extends 接口逻辑正确类型> extends 接口结果转换器<实现错误类型, 实现正确类型, {
|
|
151
|
-
status: 'fail';
|
|
152
|
-
data: 实现错误类型;
|
|
153
|
-
}, {
|
|
154
|
-
status: 'success';
|
|
155
|
-
data: 实现正确类型;
|
|
156
|
-
}> {
|
|
157
|
-
实现(数据: Either<实现错误类型, 实现正确类型>): {
|
|
158
|
-
status: 'fail';
|
|
159
|
-
data: 实现错误类型;
|
|
160
|
-
} | {
|
|
161
|
-
status: 'success';
|
|
162
|
-
data: 实现正确类型;
|
|
163
|
-
};
|
|
164
|
-
}
|
|
165
|
-
/**
|
|
166
|
-
* 直接形式转换器
|
|
167
|
-
*
|
|
168
|
-
* 将业务逻辑返回的 Either<错误, {data: ...}> 转换为直接格式:
|
|
169
|
-
* - 成功时: 直接的 data 内容
|
|
170
|
-
* - 失败时: { status: 'fail', data: ... }
|
|
171
|
-
*
|
|
172
|
-
* 用于需要直接返回的场景:
|
|
173
|
-
* - 因为接口逻辑需要组合, 所以返回值必须是对象, 但有时候需要返回一个非对象数据
|
|
174
|
-
* - 这个转换器就约定了一个模式, 用于返回直接结果
|
|
175
|
-
* - 业务逻辑需要返回 Either<错误, 成功>, 其中成功部分必须是 { data: 真正的返回值 }
|
|
176
|
-
* - 如果返回左值,返回标准错误格式 { status: 'fail', data: ... }
|
|
177
|
-
* - 如果返回右值,直接返回 data 部分
|
|
178
|
-
*
|
|
179
|
-
* 典型应用场景:
|
|
180
|
-
* - 文件下载: 直接返回文件流
|
|
181
|
-
* - 图片/视频: 直接返回二进制数据
|
|
182
|
-
* - SSE/WebSocket: 建立长连接
|
|
183
|
-
*/
|
|
184
|
-
declare class 直接形式转换器<实现最终返回类型, 实现错误类型 extends 接口逻辑错误类型, 实现正确类型 extends {
|
|
185
|
-
data: 实现最终返回类型;
|
|
186
|
-
}> extends 接口结果转换器<实现错误类型, 实现正确类型, {
|
|
187
|
-
status: 'fail';
|
|
188
|
-
data: 实现错误类型;
|
|
189
|
-
}, 实现最终返回类型> {
|
|
190
|
-
实现(数据: Either<实现错误类型, 实现正确类型>): {
|
|
191
|
-
status: 'fail';
|
|
192
|
-
data: 实现错误类型;
|
|
193
|
-
} | 实现最终返回类型;
|
|
194
|
-
}
|
|
195
|
-
|
|
196
|
-
type 接口路径类型 = string;
|
|
197
|
-
type 接口方法类型 = 'get' | 'post';
|
|
198
|
-
/**
|
|
199
|
-
* 接口的描述.
|
|
200
|
-
*/
|
|
201
|
-
declare class 接口<路径类型 extends 接口路径类型, 方法类型 extends 接口方法类型, 逻辑类型 extends 可调用接口逻辑, 接口错误形式Zod extends z.ZodTypeAny, 接口正确形式Zod extends z.ZodTypeAny, 接口结果转换器类型 extends 接口结果转换器<获得接口逻辑错误类型<逻辑类型>, 获得接口逻辑正确类型<逻辑类型>, z.infer<接口错误形式Zod>, z.infer<接口正确形式Zod>>, 接口结果返回器类型 extends _______<z.infer<接口正确形式Zod>>> {
|
|
202
|
-
private 请求路径;
|
|
203
|
-
private 请求方法;
|
|
204
|
-
private 接口逻辑;
|
|
205
|
-
private 接口错误形式Zod;
|
|
206
|
-
private 接口正确形式Zod;
|
|
207
|
-
private 结果转换器;
|
|
208
|
-
private 结果返回器;
|
|
209
|
-
protected readonly __类型保持符号?: [
|
|
210
|
-
路径类型,
|
|
211
|
-
方法类型,
|
|
212
|
-
逻辑类型,
|
|
213
|
-
接口错误形式Zod,
|
|
214
|
-
接口正确形式Zod,
|
|
215
|
-
接口结果转换器类型
|
|
216
|
-
];
|
|
217
|
-
constructor(请求路径: 路径类型, 请求方法: 方法类型, 接口逻辑: 逻辑类型, 接口错误形式Zod: 接口错误形式Zod, 接口正确形式Zod: 接口正确形式Zod, 结果转换器: 接口结果转换器类型, 结果返回器: 接口结果返回器类型);
|
|
218
|
-
获得路径(): 路径类型;
|
|
219
|
-
获得方法(): 方法类型;
|
|
220
|
-
获得逻辑(): 逻辑类型;
|
|
221
|
-
获得接口错误形式Zod(): 接口错误形式Zod;
|
|
222
|
-
获得接口正确形式Zod(): 接口正确形式Zod;
|
|
223
|
-
获得结果转换器(): 接口结果转换器类型;
|
|
224
|
-
获得结果返回器(): 接口结果返回器类型;
|
|
225
|
-
}
|
|
226
|
-
type 任意接口 = 接口<any, any, any, any, any, any, any>;
|
|
227
|
-
type 获得接口路径类型<A> = A extends 接口<infer X, any, any, any, any, any, any> ? X : never;
|
|
228
|
-
type 获得接口方法类型<A> = A extends 接口<any, infer X, any, any, any, any, any> ? X : never;
|
|
229
|
-
type 获得接口逻辑类型<A> = A extends 接口<any, any, infer X, any, any, any, any> ? X : never;
|
|
230
|
-
type 获得接口错误形式<A> = A extends 接口<any, any, any, infer X, any, any, any> ? z.infer<X> : never;
|
|
231
|
-
type 获得接口正确形式<A> = A extends 接口<any, any, any, any, infer X, any, any> ? z.infer<X> : never;
|
|
232
|
-
type 获得接口结果转换器类型<A> = A extends 接口<any, any, any, any, any, infer X, any> ? X : never;
|
|
233
|
-
type 获得接口结果返回器类型<A> = A extends 接口<any, any, any, any, any, any, infer X> ? X : never;
|
|
234
|
-
|
|
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,17 +0,0 @@
|
|
|
1
|
-
import { z } from 'zod';
|
|
2
|
-
import { 插 as __ } from '../../interface-base-gRngpxki.cjs';
|
|
3
|
-
import '@lsby/ts-fp-data';
|
|
4
|
-
import 'express';
|
|
5
|
-
import '../../help/interior.cjs';
|
|
6
|
-
import '@lsby/ts-log';
|
|
7
|
-
import 'node:http';
|
|
8
|
-
import '../../interface/interface-retuen.cjs';
|
|
9
|
-
|
|
10
|
-
/**
|
|
11
|
-
* 该插件允许使用者给定任意的数据, 该数据将作为该插件的返回值, 最终传入到接口逻辑中
|
|
12
|
-
*/
|
|
13
|
-
declare class 自定义数据插件<Data extends z.AnyZodObject> extends __<Data> {
|
|
14
|
-
constructor(t: Data, data: z.infer<Data>);
|
|
15
|
-
}
|
|
16
|
-
|
|
17
|
-
export { 自定义数据插件 };
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
import express from 'express';
|
|
2
|
-
import { AnyZodObject, z } from 'zod';
|
|
3
|
-
import { 严格递归合并对象 as ________ } from '../../help/help.cjs';
|
|
4
|
-
import { 插 as __, z as _____, 取 as _______, o as __________ } from '../../interface-base-gRngpxki.cjs';
|
|
5
|
-
import '@lsby/ts-fp-data';
|
|
6
|
-
import '../../help/interior.cjs';
|
|
7
|
-
import '@lsby/ts-log';
|
|
8
|
-
import 'node:http';
|
|
9
|
-
import '../../interface/interface-retuen.cjs';
|
|
10
|
-
|
|
11
|
-
declare const 烙印: unique symbol;
|
|
12
|
-
declare class JSON解析插件<Result extends AnyZodObject> extends __<z.ZodObject<{
|
|
13
|
-
body: Result;
|
|
14
|
-
}>> {
|
|
15
|
-
private [烙印];
|
|
16
|
-
constructor(t: Result, opt: Parameters<typeof express.json>[0]);
|
|
17
|
-
}
|
|
18
|
-
type 任意JSON解析插件 = JSON解析插件<any>;
|
|
19
|
-
type 任意JSON解析插件项 = 任意JSON解析插件;
|
|
20
|
-
type 合并JSON插件结果<Arr extends Array<_____>> = Arr extends [] ? {} : Arr extends [infer x, ...infer xs] ? x extends infer 插件项 ? xs extends Array<_____> ? 插件项 extends 任意JSON解析插件项 ? ________<{
|
|
21
|
-
body: z.infer<_______<插件项>>['body'];
|
|
22
|
-
}, 合并JSON插件结果<xs>> : 合并JSON插件结果<xs> : {} : {} : {};
|
|
23
|
-
type 计算接口逻辑JSON参数<接口逻辑> = 合并JSON插件结果<__________<接口逻辑>>;
|
|
24
|
-
|
|
25
|
-
export { JSON解析插件, type 任意JSON解析插件, type 任意JSON解析插件项, type 合并JSON插件结果, type 计算接口逻辑JSON参数 };
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
import { z } from 'zod';
|
|
2
|
-
import { 插 as __ } from '../../interface-base-gRngpxki.cjs';
|
|
3
|
-
import '@lsby/ts-fp-data';
|
|
4
|
-
import 'express';
|
|
5
|
-
import '../../help/interior.cjs';
|
|
6
|
-
import '@lsby/ts-log';
|
|
7
|
-
import 'node:http';
|
|
8
|
-
import '../../interface/interface-retuen.cjs';
|
|
9
|
-
|
|
10
|
-
declare let zod类型表示: z.ZodObject<{}, "strip", z.ZodTypeAny, {}, {}>;
|
|
11
|
-
declare class 调试请求头插件 extends __<typeof zod类型表示> {
|
|
12
|
-
constructor();
|
|
13
|
-
}
|
|
14
|
-
|
|
15
|
-
export { 调试请求头插件 };
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
import { AnyZodObject, z } from 'zod';
|
|
2
|
-
import { 严格递归合并对象 as ________ } from '../../help/help.cjs';
|
|
3
|
-
import { 插 as __, z as _____, 取 as _______, o as __________ } from '../../interface-base-gRngpxki.cjs';
|
|
4
|
-
import '@lsby/ts-fp-data';
|
|
5
|
-
import 'express';
|
|
6
|
-
import '../../help/interior.cjs';
|
|
7
|
-
import '@lsby/ts-log';
|
|
8
|
-
import 'node:http';
|
|
9
|
-
import '../../interface/interface-retuen.cjs';
|
|
10
|
-
|
|
11
|
-
declare const 烙印: unique symbol;
|
|
12
|
-
declare class GET参数解析插件<Result extends AnyZodObject> extends __<z.ZodObject<{
|
|
13
|
-
query: Result;
|
|
14
|
-
}>> {
|
|
15
|
-
private [烙印];
|
|
16
|
-
constructor(t: Result);
|
|
17
|
-
}
|
|
18
|
-
type 任意GET参数解析插件 = GET参数解析插件<any>;
|
|
19
|
-
type 任意GET参数解析插件项 = 任意GET参数解析插件;
|
|
20
|
-
type 合并GET插件结果<Arr extends Array<_____>> = Arr extends [] ? {} : Arr extends [infer x, ...infer xs] ? x extends infer 插件项 ? xs extends Array<_____> ? 插件项 extends 任意GET参数解析插件项 ? ________<{
|
|
21
|
-
query: z.infer<_______<插件项>>['query'];
|
|
22
|
-
}, 合并GET插件结果<xs>> : 合并GET插件结果<xs> : {} : {} : {};
|
|
23
|
-
type 计算接口逻辑GET参数<接口逻辑> = 合并GET插件结果<__________<接口逻辑>>;
|
|
24
|
-
|
|
25
|
-
export { GET参数解析插件, type 任意GET参数解析插件, type 任意GET参数解析插件项, type 合并GET插件结果, type 计算接口逻辑GET参数 };
|
|
@@ -1,76 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __create = Object.create;
|
|
3
|
-
var __defProp = Object.defineProperty;
|
|
4
|
-
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
5
|
-
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
6
|
-
var __getProtoOf = Object.getPrototypeOf;
|
|
7
|
-
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
8
|
-
var __export = (target, all) => {
|
|
9
|
-
for (var name in all)
|
|
10
|
-
__defProp(target, name, { get: all[name], enumerable: true });
|
|
11
|
-
};
|
|
12
|
-
var __copyProps = (to, from, except, desc) => {
|
|
13
|
-
if (from && typeof from === "object" || typeof from === "function") {
|
|
14
|
-
for (let key of __getOwnPropNames(from))
|
|
15
|
-
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
16
|
-
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
17
|
-
}
|
|
18
|
-
return to;
|
|
19
|
-
};
|
|
20
|
-
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
21
|
-
// If the importer is in node compatibility mode or this is not an ESM
|
|
22
|
-
// file that has been converted to a CommonJS file using a Babel-
|
|
23
|
-
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
24
|
-
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
25
|
-
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
26
|
-
mod
|
|
27
|
-
));
|
|
28
|
-
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
29
|
-
|
|
30
|
-
// src/plugin/extend/urlencoded.ts
|
|
31
|
-
var urlencoded_exports = {};
|
|
32
|
-
__export(urlencoded_exports, {
|
|
33
|
-
\u8868\u5355\u89E3\u6790\u63D2\u4EF6: () => \u8868\u5355\u89E3\u6790\u63D2\u4EF6
|
|
34
|
-
});
|
|
35
|
-
module.exports = __toCommonJS(urlencoded_exports);
|
|
36
|
-
var import_express = __toESM(require("express"), 1);
|
|
37
|
-
var import_node_util = require("util");
|
|
38
|
-
var import_zod = require("zod");
|
|
39
|
-
|
|
40
|
-
// src/plugin/plug.ts
|
|
41
|
-
var \u63D2\u4EF6 = class {
|
|
42
|
-
constructor(\u7C7B\u578B, \u5B9E\u73B0) {
|
|
43
|
-
this.\u7C7B\u578B = \u7C7B\u578B;
|
|
44
|
-
this.\u5B9E\u73B0 = \u5B9E\u73B0;
|
|
45
|
-
}
|
|
46
|
-
\u83B7\u5F97\u7C7B\u578B() {
|
|
47
|
-
return this.\u7C7B\u578B;
|
|
48
|
-
}
|
|
49
|
-
\u8FD0\u884C(req, res, \u9644\u52A0\u53C2\u6570) {
|
|
50
|
-
return this.\u5B9E\u73B0(req, res, \u9644\u52A0\u53C2\u6570);
|
|
51
|
-
}
|
|
52
|
-
};
|
|
53
|
-
|
|
54
|
-
// src/plugin/extend/urlencoded.ts
|
|
55
|
-
var \u8868\u5355\u89E3\u6790\u63D2\u4EF6 = class extends \u63D2\u4EF6 {
|
|
56
|
-
constructor(t, opt) {
|
|
57
|
-
super(import_zod.z.object({ form: t }), async (req, res, \u9644\u52A0\u53C2\u6570) => {
|
|
58
|
-
let log = \u9644\u52A0\u53C2\u6570.log.extend("\u8868\u5355\u89E3\u6790\u63D2\u4EF6");
|
|
59
|
-
await new Promise(
|
|
60
|
-
(pRes, _rej) => import_express.default.urlencoded({ extended: true, ...opt })(req, res, () => {
|
|
61
|
-
pRes(null);
|
|
62
|
-
})
|
|
63
|
-
);
|
|
64
|
-
let parseResult = t.safeParse(req.body);
|
|
65
|
-
if (parseResult.success === false) {
|
|
66
|
-
await log.error("\u89E3\u6790url\u7F16\u7801\u6B63\u6587\u5931\u8D25: %o", parseResult.error);
|
|
67
|
-
throw new Error((0, import_node_util.format)("\u89E3\u6790url\u7F16\u7801\u6B63\u6587\u5931\u8D25: %o", parseResult.error));
|
|
68
|
-
}
|
|
69
|
-
return { form: parseResult.data };
|
|
70
|
-
});
|
|
71
|
-
}
|
|
72
|
-
};
|
|
73
|
-
// Annotate the CommonJS export names for ESM import in node:
|
|
74
|
-
0 && (module.exports = {
|
|
75
|
-
\u8868\u5355\u89E3\u6790\u63D2\u4EF6
|
|
76
|
-
});
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
import express from 'express';
|
|
2
|
-
import { z } from 'zod';
|
|
3
|
-
import { 插 as __ } from '../../interface-base-gRngpxki.cjs';
|
|
4
|
-
import '@lsby/ts-fp-data';
|
|
5
|
-
import '../../help/interior.cjs';
|
|
6
|
-
import '@lsby/ts-log';
|
|
7
|
-
import 'node:http';
|
|
8
|
-
import '../../interface/interface-retuen.cjs';
|
|
9
|
-
|
|
10
|
-
declare class 表单解析插件<Result extends z.AnyZodObject> extends __<z.ZodObject<{
|
|
11
|
-
form: Result;
|
|
12
|
-
}>> {
|
|
13
|
-
constructor(t: Result, opt: Parameters<typeof express.urlencoded>[0]);
|
|
14
|
-
}
|
|
15
|
-
|
|
16
|
-
export { 表单解析插件 };
|
|
@@ -1,168 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __defProp = Object.defineProperty;
|
|
3
|
-
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
-
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
-
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
-
var __export = (target, all) => {
|
|
7
|
-
for (var name in all)
|
|
8
|
-
__defProp(target, name, { get: all[name], enumerable: true });
|
|
9
|
-
};
|
|
10
|
-
var __copyProps = (to, from, except, desc) => {
|
|
11
|
-
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
|
-
for (let key of __getOwnPropNames(from))
|
|
13
|
-
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
-
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
15
|
-
}
|
|
16
|
-
return to;
|
|
17
|
-
};
|
|
18
|
-
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
-
|
|
20
|
-
// src/plugin/extend/web-socket.ts
|
|
21
|
-
var web_socket_exports = {};
|
|
22
|
-
__export(web_socket_exports, {
|
|
23
|
-
WebSocket\u63D2\u4EF6: () => WebSocket\u63D2\u4EF6
|
|
24
|
-
});
|
|
25
|
-
module.exports = __toCommonJS(web_socket_exports);
|
|
26
|
-
var import_ws2 = require("ws");
|
|
27
|
-
var import_zod = require("zod");
|
|
28
|
-
|
|
29
|
-
// src/global/global.ts
|
|
30
|
-
var import_ts_global = require("@lsby/ts-global");
|
|
31
|
-
var import_ts_log = require("@lsby/ts-log");
|
|
32
|
-
var import_ws = require("ws");
|
|
33
|
-
var log = new import_ts_log.Log("@lsby:net-core");
|
|
34
|
-
var WebSocket\u7BA1\u7406\u5668 = class {
|
|
35
|
-
constructor(\u8FDE\u63A5\u8868) {
|
|
36
|
-
this.\u8FDE\u63A5\u8868 = \u8FDE\u63A5\u8868;
|
|
37
|
-
this.\u5B9A\u65F6\u5668ID = setInterval(
|
|
38
|
-
() => {
|
|
39
|
-
this.\u6E05\u7406\u65E0\u6548\u8FDE\u63A5().catch((err) => {
|
|
40
|
-
this.log.error(`\u6E05\u7406\u65E0\u6548\u8FDE\u63A5\u5931\u8D25: ${err}`).catch((a) => `\u65E5\u5FD7\u8F93\u51FA\u9519\u8BEF: ${a}: \u65E5\u5FD7\u5185\u5BB9: ${`\u6E05\u7406\u65E0\u6548\u8FDE\u63A5\u5931\u8D25: ${err}`}`);
|
|
41
|
-
});
|
|
42
|
-
},
|
|
43
|
-
5 * 60 * 1e3
|
|
44
|
-
);
|
|
45
|
-
}
|
|
46
|
-
log = log.extend("@lsby:net-core").extend("WebSocket\u7BA1\u7406\u5668");
|
|
47
|
-
\u6E05\u7406\u51FD\u6570\u8868 = {};
|
|
48
|
-
\u5B9A\u65F6\u5668ID = null;
|
|
49
|
-
\u589E\u52A0\u8FDE\u63A5(id, ws\u53E5\u67C4) {
|
|
50
|
-
this.\u8FDE\u63A5\u8868[id] = ws\u53E5\u67C4;
|
|
51
|
-
}
|
|
52
|
-
\u67E5\u8BE2\u8FDE\u63A5\u5B58\u5728(id) {
|
|
53
|
-
return this.\u8FDE\u63A5\u8868.hasOwnProperty(id) ? true : false;
|
|
54
|
-
}
|
|
55
|
-
async \u8BBE\u7F6E\u6E05\u7406\u51FD\u6570(id, \u6E05\u7406\u51FD\u6570) {
|
|
56
|
-
if (this.\u8FDE\u63A5\u8868.hasOwnProperty(id) === false) return;
|
|
57
|
-
this.\u6E05\u7406\u51FD\u6570\u8868[id] = \u6E05\u7406\u51FD\u6570;
|
|
58
|
-
}
|
|
59
|
-
async \u83B7\u5F97\u53E5\u67C4(id) {
|
|
60
|
-
return this.\u8FDE\u63A5\u8868[id] ?? null;
|
|
61
|
-
}
|
|
62
|
-
\u5220\u9664\u8FDE\u63A5(id) {
|
|
63
|
-
let \u6E05\u7406\u51FD\u6570 = this.\u6E05\u7406\u51FD\u6570\u8868[id];
|
|
64
|
-
try {
|
|
65
|
-
this.\u8FDE\u63A5\u8868[id]?.close(1e3, "\u670D\u52A1\u5668\u4E3B\u52A8\u5173\u95ED");
|
|
66
|
-
} catch (err) {
|
|
67
|
-
this.log.error(`\u5173\u95ED WebSocket \u53E5\u67C4\u5931\u8D25, id: ${id}, \u9519\u8BEF: ${err}`).catch((a) => `\u65E5\u5FD7\u8F93\u51FA\u9519\u8BEF: ${a}: \u65E5\u5FD7\u5185\u5BB9: ${`\u5173\u95ED WebSocket \u53E5\u67C4\u5931\u8D25, id: ${id}, \u9519\u8BEF: ${err}`}`);
|
|
68
|
-
}
|
|
69
|
-
\u6E05\u7406\u51FD\u6570?.().catch((err) => this.log.error(`\u6E05\u7406\u8FDE\u63A5\u5931\u8D25, id: ${id}, \u9519\u8BEF: ${err}`));
|
|
70
|
-
delete this.\u8FDE\u63A5\u8868[id];
|
|
71
|
-
delete this.\u6E05\u7406\u51FD\u6570\u8868[id];
|
|
72
|
-
}
|
|
73
|
-
async \u6E05\u7406\u65E0\u6548\u8FDE\u63A5() {
|
|
74
|
-
let \u6E05\u7406\u6570\u91CF = 0;
|
|
75
|
-
for (let [id, ws] of Object.entries(this.\u8FDE\u63A5\u8868)) {
|
|
76
|
-
if (ws === null || ws.readyState === import_ws.WebSocket.CLOSED) {
|
|
77
|
-
this.\u5220\u9664\u8FDE\u63A5(id);
|
|
78
|
-
\u6E05\u7406\u6570\u91CF++;
|
|
79
|
-
}
|
|
80
|
-
}
|
|
81
|
-
if (\u6E05\u7406\u6570\u91CF > 0) {
|
|
82
|
-
await this.log.info(`\u6E05\u7406\u4E86 ${\u6E05\u7406\u6570\u91CF} \u4E2A\u65E0\u6548 WebSocket \u8FDE\u63A5`);
|
|
83
|
-
}
|
|
84
|
-
}
|
|
85
|
-
};
|
|
86
|
-
var Global = new import_ts_global.GlobalService([
|
|
87
|
-
new import_ts_global.GlobalItem("log", log),
|
|
88
|
-
new import_ts_global.GlobalItem("WebSocket\u7BA1\u7406\u5668", new WebSocket\u7BA1\u7406\u5668({}))
|
|
89
|
-
]);
|
|
90
|
-
|
|
91
|
-
// src/plugin/plug.ts
|
|
92
|
-
var \u63D2\u4EF6 = class {
|
|
93
|
-
constructor(\u7C7B\u578B, \u5B9E\u73B0) {
|
|
94
|
-
this.\u7C7B\u578B = \u7C7B\u578B;
|
|
95
|
-
this.\u5B9E\u73B0 = \u5B9E\u73B0;
|
|
96
|
-
}
|
|
97
|
-
\u83B7\u5F97\u7C7B\u578B() {
|
|
98
|
-
return this.\u7C7B\u578B;
|
|
99
|
-
}
|
|
100
|
-
\u8FD0\u884C(req, res, \u9644\u52A0\u53C2\u6570) {
|
|
101
|
-
return this.\u5B9E\u73B0(req, res, \u9644\u52A0\u53C2\u6570);
|
|
102
|
-
}
|
|
103
|
-
};
|
|
104
|
-
|
|
105
|
-
// src/plugin/extend/web-socket.ts
|
|
106
|
-
var WebSocket\u63D2\u4EF6 = class extends \u63D2\u4EF6 {
|
|
107
|
-
constructor(\u4FE1\u606F\u63CF\u8FF0) {
|
|
108
|
-
super(
|
|
109
|
-
import_zod.z.object({
|
|
110
|
-
ws\u64CD\u4F5C: import_zod.z.object({
|
|
111
|
-
\u53D1\u9001ws\u4FE1\u606F: import_zod.z.function(import_zod.z.tuple([\u4FE1\u606F\u63CF\u8FF0]), import_zod.z.promise(import_zod.z.void())),
|
|
112
|
-
\u5173\u95EDws\u8FDE\u63A5: import_zod.z.function(import_zod.z.tuple([]), import_zod.z.promise(import_zod.z.void())),
|
|
113
|
-
\u8BBE\u7F6E\u6E05\u7406\u51FD\u6570: import_zod.z.function(import_zod.z.tuple([import_zod.z.function(import_zod.z.tuple([]), import_zod.z.promise(import_zod.z.void()))]), import_zod.z.promise(import_zod.z.void()))
|
|
114
|
-
}).or(import_zod.z.null())
|
|
115
|
-
}),
|
|
116
|
-
async (req, _res, \u9644\u52A0\u53C2\u6570) => {
|
|
117
|
-
let log2 = \u9644\u52A0\u53C2\u6570.log.extend("webSocket\u63D2\u4EF6");
|
|
118
|
-
let WebSocket\u7BA1\u7406\u56682 = await Global.getItem("WebSocket\u7BA1\u7406\u5668");
|
|
119
|
-
let ws\u53E5\u67C4 = null;
|
|
120
|
-
let wsId = req.headers["ws-client-id"];
|
|
121
|
-
await log2.debug("\u68C0\u67E5 ws-client-id \u5934\u4FE1\u606F", { wsId });
|
|
122
|
-
if (typeof wsId !== "string") {
|
|
123
|
-
await log2.error("\u672A\u80FD\u83B7\u53D6\u5230\u6709\u6548\u7684 WebSocket Id");
|
|
124
|
-
return { ws\u64CD\u4F5C: null };
|
|
125
|
-
}
|
|
126
|
-
await log2.debug("\u5DF2\u83B7\u5F97 WebSocket Id: %o", wsId);
|
|
127
|
-
return {
|
|
128
|
-
ws\u64CD\u4F5C: {
|
|
129
|
-
async \u53D1\u9001ws\u4FE1\u606F(\u4FE1\u606F) {
|
|
130
|
-
if (ws\u53E5\u67C4 === null) {
|
|
131
|
-
ws\u53E5\u67C4 = await WebSocket\u7BA1\u7406\u56682.\u83B7\u5F97\u53E5\u67C4(wsId);
|
|
132
|
-
}
|
|
133
|
-
if (ws\u53E5\u67C4 === null) {
|
|
134
|
-
await log2.error("\u672A\u80FD\u83B7\u53D6\u5230\u6709\u6548\u7684 WebSocket \u53E5\u67C4");
|
|
135
|
-
return;
|
|
136
|
-
}
|
|
137
|
-
if (ws\u53E5\u67C4.readyState !== import_ws2.WebSocket.OPEN) {
|
|
138
|
-
await log2.warn("WebSocket \u672A\u6253\u5F00\uFF0C\u65E0\u6CD5\u53D1\u9001\u6D88\u606F", { wsId });
|
|
139
|
-
return;
|
|
140
|
-
}
|
|
141
|
-
await new Promise((resolve, reject) => {
|
|
142
|
-
ws\u53E5\u67C4?.send(JSON.stringify(\u4FE1\u606F), (err) => {
|
|
143
|
-
if (err !== void 0 && err !== null) {
|
|
144
|
-
log2.warn("\u53D1\u9001 WebSocket \u4FE1\u606F\u5931\u8D25", { \u9519\u8BEF: err }).catch((a) => `\u65E5\u5FD7\u8F93\u51FA\u9519\u8BEF: ${a}: \u65E5\u5FD7\u5185\u5BB9: ${`\u53D1\u9001 WebSocket \u4FE1\u606F\u5931\u8D25: ${err}`}`);
|
|
145
|
-
return reject(err);
|
|
146
|
-
}
|
|
147
|
-
resolve();
|
|
148
|
-
});
|
|
149
|
-
});
|
|
150
|
-
},
|
|
151
|
-
async \u5173\u95EDws\u8FDE\u63A5() {
|
|
152
|
-
await log2.debug("\u5173\u95ED WebSocket \u8FDE\u63A5", { wsId });
|
|
153
|
-
WebSocket\u7BA1\u7406\u56682.\u5220\u9664\u8FDE\u63A5(wsId);
|
|
154
|
-
},
|
|
155
|
-
async \u8BBE\u7F6E\u6E05\u7406\u51FD\u6570(\u6E05\u7406\u51FD\u6570) {
|
|
156
|
-
await log2.debug("\u8BBE\u7F6E WebSocket \u6E05\u7406\u51FD\u6570", { wsId });
|
|
157
|
-
await WebSocket\u7BA1\u7406\u56682.\u8BBE\u7F6E\u6E05\u7406\u51FD\u6570(wsId, \u6E05\u7406\u51FD\u6570);
|
|
158
|
-
}
|
|
159
|
-
}
|
|
160
|
-
};
|
|
161
|
-
}
|
|
162
|
-
);
|
|
163
|
-
}
|
|
164
|
-
};
|
|
165
|
-
// Annotate the CommonJS export names for ESM import in node:
|
|
166
|
-
0 && (module.exports = {
|
|
167
|
-
WebSocket\u63D2\u4EF6
|
|
168
|
-
});
|
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
import { z } from 'zod';
|
|
2
|
-
import { 插 as __, z as _____ } from '../../interface-base-gRngpxki.cjs';
|
|
3
|
-
import '@lsby/ts-fp-data';
|
|
4
|
-
import 'express';
|
|
5
|
-
import '../../help/interior.cjs';
|
|
6
|
-
import '@lsby/ts-log';
|
|
7
|
-
import 'node:http';
|
|
8
|
-
import '../../interface/interface-retuen.cjs';
|
|
9
|
-
|
|
10
|
-
declare class WebSocket插件<信息 extends z.AnyZodObject | z.ZodUnion<any>> extends __<z.ZodObject<{
|
|
11
|
-
ws操作: z.ZodUnion<[
|
|
12
|
-
z.ZodObject<{
|
|
13
|
-
发送ws信息: z.ZodFunction<z.ZodTuple<[信息], null>, z.ZodPromise<z.ZodVoid>>;
|
|
14
|
-
关闭ws连接: z.ZodFunction<z.ZodTuple<[], null>, z.ZodPromise<z.ZodVoid>>;
|
|
15
|
-
设置清理函数: z.ZodFunction<z.ZodTuple<[z.ZodFunction<z.ZodTuple<[], null>, z.ZodPromise<z.ZodVoid>>], null>, z.ZodPromise<z.ZodVoid>>;
|
|
16
|
-
}>,
|
|
17
|
-
z.ZodNull
|
|
18
|
-
]>;
|
|
19
|
-
}>> {
|
|
20
|
-
constructor(信息描述: 信息);
|
|
21
|
-
}
|
|
22
|
-
type 任意WS插件 = WebSocket插件<any>;
|
|
23
|
-
type 任意WS插件项 = 任意WS插件;
|
|
24
|
-
type 取WS插件泛型<A> = A extends WebSocket插件<infer x> ? x : never;
|
|
25
|
-
type 取第一个WS插件结果<Arr extends Array<_____>> = Arr extends [] ? {} : Arr extends [infer x, ...infer xs] ? x extends infer 插件项 ? xs extends Array<_____> ? 插件项 extends 任意WS插件项 ? z.infer<取WS插件泛型<插件项>> : 取第一个WS插件结果<xs> : {} : {} : {};
|
|
26
|
-
|
|
27
|
-
export { WebSocket插件, type 任意WS插件, type 任意WS插件项, type 取WS插件泛型, type 取第一个WS插件结果 };
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
import 'express';
|
|
2
|
-
import 'zod';
|
|
3
|
-
export { y as 任意插件, A as 取插件内部ts类型, 取 as 取插件内部类型, 合 as 合并插件结果, 插 as 插件, z as 插件项类型 } from '../interface-base-gRngpxki.cjs';
|
|
4
|
-
import '@lsby/ts-fp-data';
|
|
5
|
-
import '../help/interior.cjs';
|
|
6
|
-
import '@lsby/ts-log';
|
|
7
|
-
import 'node:http';
|
|
8
|
-
import '../interface/interface-retuen.cjs';
|