@fbrpc/fbrpc-core 0.1.1 → 0.1.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/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/types.d.ts +16 -11
- package/dist/types.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/index.ts +1 -4
- package/src/types.ts +19 -15
package/dist/index.d.ts
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
export type { ApiDef,
|
|
1
|
+
export type { ApiDef, Protocol, ApiCall, StreamCall, AnyApiHandler, AnyStreamHandler, ServiceHandlers, ServiceStreamHandlers, ApiModule, SuccResponse, ErrResponse, ApiResponse, } from "./types.js";
|
|
2
2
|
export { RpcError } from "./errors.js";
|
|
3
3
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,MAAM,EACN,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,MAAM,EACN,QAAQ,EACR,OAAO,EACP,UAAU,EACV,aAAa,EACb,gBAAgB,EAChB,eAAe,EACf,qBAAqB,EACrB,SAAS,EACT,YAAY,EACZ,WAAW,EACX,WAAW,GACZ,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC"}
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAcA,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC"}
|
package/dist/types.d.ts
CHANGED
|
@@ -9,10 +9,6 @@ export interface ApiDef<Req = unknown, Res = unknown> {
|
|
|
9
9
|
req: Req;
|
|
10
10
|
res: Res;
|
|
11
11
|
}
|
|
12
|
-
/** 从 ApiDef 提取请求类型 */
|
|
13
|
-
export type ReqOf<D extends ApiDef> = D["req"];
|
|
14
|
-
/** 从 ApiDef 提取响应类型 */
|
|
15
|
-
export type ResOf<D extends ApiDef> = D["res"];
|
|
16
12
|
/** 协议映射:{ 方法名: ApiDef } */
|
|
17
13
|
export type Protocol = Record<string, ApiDef>;
|
|
18
14
|
/**
|
|
@@ -44,16 +40,13 @@ export interface StreamCall<D extends ApiDef<unknown, void> = ApiDef<unknown, vo
|
|
|
44
40
|
* 启动流式输出。
|
|
45
41
|
* fn 接收 send 函数,每次 send(chunk) 输出一个 SSE 事件。
|
|
46
42
|
*/
|
|
47
|
-
stream(fn: (send: (chunk: unknown) =>
|
|
43
|
+
stream(fn: (send: (chunk: unknown) => void) => Promise<void>): void;
|
|
48
44
|
/** 流式错误 */
|
|
49
|
-
error(message: string): void;
|
|
45
|
+
error(message: string, code?: string): void;
|
|
50
46
|
}
|
|
51
|
-
/**
|
|
52
|
-
export type ApiHandler<D extends ApiDef = ApiDef> = (call: ApiCall<D>) => Promise<void>;
|
|
53
|
-
/** SSE 流式处理器(泛型——用于单一定义) */
|
|
54
|
-
export type StreamHandler<D extends ApiDef<unknown, void> = ApiDef<unknown, void>> = (call: StreamCall<D>) => void;
|
|
55
|
-
/** 宽松版 handler——接受任意 ApiCall,用于模块导出 */
|
|
47
|
+
/** 任意 ApiCall 的 handler 类型,用于 ApiModule 和扫描器 */
|
|
56
48
|
export type AnyApiHandler = (call: ApiCall<any>) => Promise<void>;
|
|
49
|
+
/** 任意 StreamCall 的 handler 类型 */
|
|
57
50
|
export type AnyStreamHandler = (call: StreamCall<any>) => void;
|
|
58
51
|
/**
|
|
59
52
|
* 从 Protocol 推导类型安全的 handler 映射。
|
|
@@ -70,6 +63,18 @@ export type AnyStreamHandler = (call: StreamCall<any>) => void;
|
|
|
70
63
|
export type ServiceHandlers<P> = {
|
|
71
64
|
[K in keyof P & string]: P[K] extends ApiDef<infer Req, infer Res> ? (call: ApiCall<ApiDef<Req, Res>>) => Promise<void> : never;
|
|
72
65
|
};
|
|
66
|
+
/**
|
|
67
|
+
* 从 Protocol 推导类型安全的 SSE 流式 handler 映射。
|
|
68
|
+
*
|
|
69
|
+
* 与 ServiceHandlers 对称——但 handler 返回 void(同步),
|
|
70
|
+
* StreamCall.res 固定为 void(流式不返回)。
|
|
71
|
+
*
|
|
72
|
+
* 配合 satisfies ServiceStreamHandlers<Pick<Protocol, "streamMethod">>,
|
|
73
|
+
* key 名精确、req 类型对齐。需要编译期检查的流式方法用 Pick 选出。
|
|
74
|
+
*/
|
|
75
|
+
export type ServiceStreamHandlers<P> = {
|
|
76
|
+
[K in keyof P & string]: P[K] extends ApiDef<infer Req, any> ? (call: StreamCall<ApiDef<Req, void>>) => void : never;
|
|
77
|
+
};
|
|
73
78
|
/**
|
|
74
79
|
* 一个服务模块的导出。
|
|
75
80
|
* services/<name>/api.ts 必须导出这个形状。
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,uBAAuB;AACvB,MAAM,WAAW,MAAM,CAAC,GAAG,GAAG,OAAO,EAAE,GAAG,GAAG,OAAO;IAClD,GAAG,EAAE,GAAG,CAAC;IACT,GAAG,EAAE,GAAG,CAAC;CACV;AAED,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
package/src/index.ts
CHANGED
package/src/types.ts
CHANGED
|
@@ -13,12 +13,6 @@ export interface ApiDef<Req = unknown, Res = unknown> {
|
|
|
13
13
|
res: Res;
|
|
14
14
|
}
|
|
15
15
|
|
|
16
|
-
/** 从 ApiDef 提取请求类型 */
|
|
17
|
-
export type ReqOf<D extends ApiDef> = D["req"];
|
|
18
|
-
|
|
19
|
-
/** 从 ApiDef 提取响应类型 */
|
|
20
|
-
export type ResOf<D extends ApiDef> = D["res"];
|
|
21
|
-
|
|
22
16
|
/** 协议映射:{ 方法名: ApiDef } */
|
|
23
17
|
export type Protocol = Record<string, ApiDef>;
|
|
24
18
|
|
|
@@ -54,21 +48,16 @@ export interface StreamCall<D extends ApiDef<unknown, void> = ApiDef<unknown, vo
|
|
|
54
48
|
* 启动流式输出。
|
|
55
49
|
* fn 接收 send 函数,每次 send(chunk) 输出一个 SSE 事件。
|
|
56
50
|
*/
|
|
57
|
-
stream(fn: (send: (chunk: unknown) =>
|
|
51
|
+
stream(fn: (send: (chunk: unknown) => void) => Promise<void>): void;
|
|
58
52
|
/** 流式错误 */
|
|
59
|
-
error(message: string): void;
|
|
53
|
+
error(message: string, code?: string): void;
|
|
60
54
|
}
|
|
61
55
|
|
|
62
56
|
// ── 处理器 ──
|
|
63
57
|
|
|
64
|
-
/**
|
|
65
|
-
export type ApiHandler<D extends ApiDef = ApiDef> = (call: ApiCall<D>) => Promise<void>;
|
|
66
|
-
|
|
67
|
-
/** SSE 流式处理器(泛型——用于单一定义) */
|
|
68
|
-
export type StreamHandler<D extends ApiDef<unknown, void> = ApiDef<unknown, void>> = (call: StreamCall<D>) => void;
|
|
69
|
-
|
|
70
|
-
/** 宽松版 handler——接受任意 ApiCall,用于模块导出 */
|
|
58
|
+
/** 任意 ApiCall 的 handler 类型,用于 ApiModule 和扫描器 */
|
|
71
59
|
export type AnyApiHandler = (call: ApiCall<any>) => Promise<void>;
|
|
60
|
+
/** 任意 StreamCall 的 handler 类型 */
|
|
72
61
|
export type AnyStreamHandler = (call: StreamCall<any>) => void;
|
|
73
62
|
|
|
74
63
|
/**
|
|
@@ -89,6 +78,21 @@ export type ServiceHandlers<P> = {
|
|
|
89
78
|
: never
|
|
90
79
|
};
|
|
91
80
|
|
|
81
|
+
/**
|
|
82
|
+
* 从 Protocol 推导类型安全的 SSE 流式 handler 映射。
|
|
83
|
+
*
|
|
84
|
+
* 与 ServiceHandlers 对称——但 handler 返回 void(同步),
|
|
85
|
+
* StreamCall.res 固定为 void(流式不返回)。
|
|
86
|
+
*
|
|
87
|
+
* 配合 satisfies ServiceStreamHandlers<Pick<Protocol, "streamMethod">>,
|
|
88
|
+
* key 名精确、req 类型对齐。需要编译期检查的流式方法用 Pick 选出。
|
|
89
|
+
*/
|
|
90
|
+
export type ServiceStreamHandlers<P> = {
|
|
91
|
+
[K in keyof P & string]: P[K] extends ApiDef<infer Req, any>
|
|
92
|
+
? (call: StreamCall<ApiDef<Req, void>>) => void
|
|
93
|
+
: never;
|
|
94
|
+
};
|
|
95
|
+
|
|
92
96
|
// ── 模块描述 ──
|
|
93
97
|
|
|
94
98
|
/**
|