@rfkit/json-rpc-websocket 0.2.0 → 0.2.1

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.
@@ -0,0 +1,107 @@
1
+ /**
2
+ * 现代化 JSON-RPC WebSocket 客户端
3
+ * 特性:
4
+ * - 完全类型安全
5
+ * - 自动重连
6
+ * - 请求超时
7
+ * - 心跳检测
8
+ * - 流式响应
9
+ * - 性能监控
10
+ */
11
+ import type { JsonRpcResponse } from '../types/jsonrpc';
12
+ import type { ConnectionOptions, NotificationOptions, PerformanceStats, RequestOptions, SocketEvents, StreamController, StreamOptions } from '../types/socket';
13
+ import { ConnectionState } from '../types/socket';
14
+ import { EventEmitter } from './event-emitter';
15
+ export declare class JsonRpcWebSocketClient extends EventEmitter<SocketEvents> {
16
+ private ws;
17
+ private options;
18
+ private pendingRequests;
19
+ private streamCallbacks;
20
+ private reconnectAttempts;
21
+ private reconnectTimeoutId;
22
+ private heartbeatIntervalId;
23
+ private stats;
24
+ private responseTimes;
25
+ constructor(options: ConnectionOptions);
26
+ /**
27
+ * 获取连接状态
28
+ */
29
+ get state(): ConnectionState;
30
+ /**
31
+ * 是否已连接
32
+ */
33
+ get isConnected(): boolean;
34
+ /**
35
+ * 获取性能统计
36
+ */
37
+ getStats(): Readonly<PerformanceStats>;
38
+ /**
39
+ * 建立连接
40
+ */
41
+ private connect;
42
+ /**
43
+ * 处理连接打开
44
+ */
45
+ private handleOpen;
46
+ /**
47
+ * 处理收到消息
48
+ */
49
+ private handleMessage;
50
+ /**
51
+ * 处理连接关闭
52
+ */
53
+ private handleClose;
54
+ /**
55
+ * 处理连接错误
56
+ */
57
+ private handleError;
58
+ /**
59
+ * 安排重连
60
+ */
61
+ private scheduleReconnect;
62
+ /**
63
+ * 启动心跳
64
+ */
65
+ private startHeartbeat;
66
+ /**
67
+ * 停止心跳
68
+ */
69
+ private stopHeartbeat;
70
+ /**
71
+ * 拒绝所有待处理的请求
72
+ */
73
+ private rejectAllPendingRequests;
74
+ /**
75
+ * 更新响应时间统计
76
+ */
77
+ private updateResponseTime;
78
+ /**
79
+ * 发送请求
80
+ */
81
+ request<TResult = unknown, TParams = unknown>(options: RequestOptions<TParams>): Promise<TResult>;
82
+ /**
83
+ * 发送通知(不需要响应)
84
+ */
85
+ notify<TParams = unknown>(options: NotificationOptions<TParams>): Promise<void>;
86
+ /**
87
+ * 创建流式请求
88
+ */
89
+ stream<TResult = unknown, TParams = unknown>(options: StreamOptions<TParams>, callback: (response: JsonRpcResponse<TResult>) => void): StreamController;
90
+ /**
91
+ * 发送原始数据(用于转发)
92
+ */
93
+ sendRaw(data: ArrayBuffer | Uint8Array): void;
94
+ /**
95
+ * 关闭连接
96
+ */
97
+ close(code?: number, reason?: string): void;
98
+ /**
99
+ * 更换 URL 并重连
100
+ */
101
+ reconnectToUrl(url: string): void;
102
+ /**
103
+ * 调试日志
104
+ */
105
+ private log;
106
+ }
107
+ //# sourceMappingURL=client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/core/client.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAIH,OAAO,KAAK,EAGV,eAAe,EAChB,MAAM,kBAAkB,CAAC;AAE1B,OAAO,KAAK,EACV,iBAAiB,EACjB,mBAAmB,EACnB,gBAAgB,EAEhB,cAAc,EACd,YAAY,EACZ,gBAAgB,EAChB,aAAa,EACd,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,eAAe,EAAe,MAAM,iBAAiB,CAAC;AAC/D,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAa/C,qBAAa,sBAAuB,SAAQ,YAAY,CAAC,YAAY,CAAC;IACpE,OAAO,CAAC,EAAE,CAA0B;IACpC,OAAO,CAAC,OAAO,CAA6C;IAC5D,OAAO,CAAC,eAAe,CAA+C;IACtE,OAAO,CAAC,eAAe,CAGnB;IACJ,OAAO,CAAC,iBAAiB,CAAK;IAC9B,OAAO,CAAC,kBAAkB,CAA+B;IACzD,OAAO,CAAC,mBAAmB,CAA+B;IAC1D,OAAO,CAAC,KAAK,CAQX;IACF,OAAO,CAAC,aAAa,CAAgB;gBAEzB,OAAO,EAAE,iBAAiB;IAMtC;;OAEG;IACH,IAAI,KAAK,IAAI,eAAe,CAE3B;IAED;;OAEG;IACH,IAAI,WAAW,IAAI,OAAO,CAEzB;IAED;;OAEG;IACH,QAAQ,IAAI,QAAQ,CAAC,gBAAgB,CAAC;IAItC;;OAEG;IACH,OAAO,CAAC,OAAO;IAmBf;;OAEG;IACH,OAAO,CAAC,UAAU;IAOlB;;OAEG;IACH,OAAO,CAAC,aAAa;IAkDrB;;OAEG;IACH,OAAO,CAAC,WAAW;IAiBnB;;OAEG;IACH,OAAO,CAAC,WAAW;IAKnB;;OAEG;IACH,OAAO,CAAC,iBAAiB;IA6BzB;;OAEG;IACH,OAAO,CAAC,cAAc;IAmBtB;;OAEG;IACH,OAAO,CAAC,aAAa;IAOrB;;OAEG;IACH,OAAO,CAAC,wBAAwB;IAQhC;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAU1B;;OAEG;IACG,OAAO,CAAC,OAAO,GAAG,OAAO,EAAE,OAAO,GAAG,OAAO,EAChD,OAAO,EAAE,cAAc,CAAC,OAAO,CAAC,GAC/B,OAAO,CAAC,OAAO,CAAC;IA0CnB;;OAEG;IACG,MAAM,CAAC,OAAO,GAAG,OAAO,EAC5B,OAAO,EAAE,mBAAmB,CAAC,OAAO,CAAC,GACpC,OAAO,CAAC,IAAI,CAAC;IAgBhB;;OAEG;IACH,MAAM,CAAC,OAAO,GAAG,OAAO,EAAE,OAAO,GAAG,OAAO,EACzC,OAAO,EAAE,aAAa,CAAC,OAAO,CAAC,EAC/B,QAAQ,EAAE,CAAC,QAAQ,EAAE,eAAe,CAAC,OAAO,CAAC,KAAK,IAAI,GACrD,gBAAgB;IA0CnB;;OAEG;IACH,OAAO,CAAC,IAAI,EAAE,WAAW,GAAG,UAAU,GAAG,IAAI;IAQ7C;;OAEG;IACH,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI;IAuB3C;;OAEG;IACH,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAQjC;;OAEG;IACH,OAAO,CAAC,GAAG;CAKZ"}
@@ -0,0 +1,31 @@
1
+ /**
2
+ * 类型安全的事件发射器
3
+ */
4
+ export declare class EventEmitter<TEvents extends Record<string, unknown>> {
5
+ private listeners;
6
+ /**
7
+ * 监听事件
8
+ */
9
+ on<K extends keyof TEvents>(event: K, listener: (data: TEvents[K]) => void): () => void;
10
+ /**
11
+ * 监听一次事件
12
+ */
13
+ once<K extends keyof TEvents>(event: K, listener: (data: TEvents[K]) => void): () => void;
14
+ /**
15
+ * 取消监听事件
16
+ */
17
+ off<K extends keyof TEvents>(event: K, listener: (data: TEvents[K]) => void): void;
18
+ /**
19
+ * 触发事件
20
+ */
21
+ emit<K extends keyof TEvents>(event: K, data: TEvents[K]): void;
22
+ /**
23
+ * 移除所有监听器
24
+ */
25
+ removeAllListeners(event?: keyof TEvents): void;
26
+ /**
27
+ * 获取事件监听器数量
28
+ */
29
+ listenerCount(event: keyof TEvents): number;
30
+ }
31
+ //# sourceMappingURL=event-emitter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"event-emitter.d.ts","sourceRoot":"","sources":["../../src/core/event-emitter.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,qBAAa,YAAY,CAAC,OAAO,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAC/D,OAAO,CAAC,SAAS,CAGb;IAEJ;;OAEG;IACH,EAAE,CAAC,CAAC,SAAS,MAAM,OAAO,EACxB,KAAK,EAAE,CAAC,EACR,QAAQ,EAAE,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,KAAK,IAAI,GACnC,MAAM,IAAI;IAUb;;OAEG;IACH,IAAI,CAAC,CAAC,SAAS,MAAM,OAAO,EAC1B,KAAK,EAAE,CAAC,EACR,QAAQ,EAAE,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,KAAK,IAAI,GACnC,MAAM,IAAI;IAQb;;OAEG;IACH,GAAG,CAAC,CAAC,SAAS,MAAM,OAAO,EACzB,KAAK,EAAE,CAAC,EACR,QAAQ,EAAE,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,KAAK,IAAI,GACnC,IAAI;IAUP;;OAEG;IACH,IAAI,CAAC,CAAC,SAAS,MAAM,OAAO,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,GAAG,IAAI;IAgB/D;;OAEG;IACH,kBAAkB,CAAC,KAAK,CAAC,EAAE,MAAM,OAAO,GAAG,IAAI;IAQ/C;;OAEG;IACH,aAAa,CAAC,KAAK,EAAE,MAAM,OAAO,GAAG,MAAM;CAG5C"}
package/index.d.ts ADDED
@@ -0,0 +1,11 @@
1
+ /**
2
+ * JSON-RPC WebSocket Client (v2)
3
+ * 现代化、类型安全的 JSON-RPC over WebSocket 实现
4
+ */
5
+ export { JsonRpcWebSocketClient as default } from './core/client';
6
+ export { JsonRpcWebSocketClient } from './core/client';
7
+ export type { JsonRpcRequest, JsonRpcResponse, JsonRpcSuccess, JsonRpcError, JsonRpcNotification, JsonRpcMessage, JsonRpcErrorCode, ConnectionOptions, RequestOptions, NotificationOptions, StreamOptions, StreamController, SocketEvents, PerformanceStats, ConnectionState, MessageEventData, SocketEvent, } from './types';
8
+ export { encode, decode, serialize, deserialize } from './pack';
9
+ export type { SerializeOptions, DeserializeOptions } from './pack/types';
10
+ export { generateUUID } from './tools';
11
+ //# sourceMappingURL=index.d.ts.map
package/index.d.ts.map ADDED
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAE,sBAAsB,IAAI,OAAO,EAAE,MAAM,eAAe,CAAC;AAClE,OAAO,EAAE,sBAAsB,EAAE,MAAM,eAAe,CAAC;AAGvD,YAAY,EAEV,cAAc,EACd,eAAe,EACf,cAAc,EACd,YAAY,EACZ,mBAAmB,EACnB,cAAc,EACd,gBAAgB,EAEhB,iBAAiB,EACjB,cAAc,EACd,mBAAmB,EACnB,aAAa,EACb,gBAAgB,EAChB,YAAY,EACZ,gBAAgB,EAChB,eAAe,EACf,gBAAgB,EAEhB,WAAW,GACZ,MAAM,SAAS,CAAC;AAGjB,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,QAAQ,CAAC;AAChE,YAAY,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAGzE,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC"}