@zhin.js/client 1.0.17 → 1.0.18

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.
Files changed (76) hide show
  1. package/client/app.ts +228 -0
  2. package/client/index.ts +42 -14
  3. package/client/websocket/hooks.ts +218 -510
  4. package/client/websocket/index.ts +6 -43
  5. package/client/websocket/instance.ts +10 -32
  6. package/client/websocket/manager.ts +173 -390
  7. package/client/websocket/types.ts +58 -222
  8. package/dist/app.d.ts +95 -0
  9. package/dist/app.d.ts.map +1 -0
  10. package/dist/app.js +147 -0
  11. package/dist/app.js.map +1 -0
  12. package/dist/index.d.ts +7 -7
  13. package/dist/index.d.ts.map +1 -1
  14. package/dist/index.js +10 -14
  15. package/dist/index.js.map +1 -1
  16. package/dist/websocket/hooks.d.ts +35 -58
  17. package/dist/websocket/hooks.d.ts.map +1 -1
  18. package/dist/websocket/hooks.js +134 -410
  19. package/dist/websocket/hooks.js.map +1 -1
  20. package/dist/websocket/index.d.ts +5 -10
  21. package/dist/websocket/index.d.ts.map +1 -1
  22. package/dist/websocket/index.js +5 -25
  23. package/dist/websocket/index.js.map +1 -1
  24. package/dist/websocket/instance.d.ts +1 -14
  25. package/dist/websocket/instance.d.ts.map +1 -1
  26. package/dist/websocket/instance.js +2 -20
  27. package/dist/websocket/instance.js.map +1 -1
  28. package/dist/websocket/manager.d.ts +23 -93
  29. package/dist/websocket/manager.d.ts.map +1 -1
  30. package/dist/websocket/manager.js +87 -227
  31. package/dist/websocket/manager.js.map +1 -1
  32. package/dist/websocket/types.d.ts +35 -122
  33. package/dist/websocket/types.d.ts.map +1 -1
  34. package/dist/websocket/types.js +4 -13
  35. package/dist/websocket/types.js.map +1 -1
  36. package/package.json +12 -11
  37. package/client/router/index.tsx +0 -54
  38. package/client/store/index.ts +0 -132
  39. package/client/store/reducers/config.ts +0 -135
  40. package/client/store/reducers/index.ts +0 -19
  41. package/client/store/reducers/route.ts +0 -126
  42. package/client/store/reducers/script.ts +0 -109
  43. package/client/store/reducers/ui.ts +0 -31
  44. package/client/websocket/messageHandler.ts +0 -208
  45. package/dist/router/index.d.ts +0 -25
  46. package/dist/router/index.d.ts.map +0 -1
  47. package/dist/router/index.js +0 -48
  48. package/dist/router/index.js.map +0 -1
  49. package/dist/store/index.d.ts +0 -19
  50. package/dist/store/index.d.ts.map +0 -1
  51. package/dist/store/index.js +0 -67
  52. package/dist/store/index.js.map +0 -1
  53. package/dist/store/reducers/config.d.ts +0 -54
  54. package/dist/store/reducers/config.d.ts.map +0 -1
  55. package/dist/store/reducers/config.js +0 -78
  56. package/dist/store/reducers/config.js.map +0 -1
  57. package/dist/store/reducers/index.d.ts +0 -13
  58. package/dist/store/reducers/index.d.ts.map +0 -1
  59. package/dist/store/reducers/index.js +0 -11
  60. package/dist/store/reducers/index.js.map +0 -1
  61. package/dist/store/reducers/route.d.ts +0 -30
  62. package/dist/store/reducers/route.d.ts.map +0 -1
  63. package/dist/store/reducers/route.js +0 -85
  64. package/dist/store/reducers/route.js.map +0 -1
  65. package/dist/store/reducers/script.d.ts +0 -13
  66. package/dist/store/reducers/script.d.ts.map +0 -1
  67. package/dist/store/reducers/script.js +0 -78
  68. package/dist/store/reducers/script.js.map +0 -1
  69. package/dist/store/reducers/ui.d.ts +0 -8
  70. package/dist/store/reducers/ui.d.ts.map +0 -1
  71. package/dist/store/reducers/ui.js +0 -23
  72. package/dist/store/reducers/ui.js.map +0 -1
  73. package/dist/websocket/messageHandler.d.ts +0 -58
  74. package/dist/websocket/messageHandler.d.ts.map +0 -1
  75. package/dist/websocket/messageHandler.js +0 -174
  76. package/dist/websocket/messageHandler.js.map +0 -1
@@ -1,58 +1,43 @@
1
- /**
2
- * WebSocket 核心管理器
3
- * 负责 WebSocket 连接管理、消息发送、重连逻辑等核心功能
4
- */
5
- import { store, setConnected, updateConfigs, updateSchemas } from '../store';
6
- import { MessageHandler } from './messageHandler';
7
- import { ConnectionState, WebSocketError, ConnectionError, MessageError, RequestTimeoutError } from './types';
1
+ import { ConnectionState, WebSocketError, ConnectionError, MessageError, RequestTimeoutError, } from "./types";
8
2
  export class WebSocketManager {
9
- // ============================================================================
10
- // 私有属性
11
- // ============================================================================
12
3
  ws = null;
13
4
  config;
14
5
  callbacks;
15
6
  state = ConnectionState.DISCONNECTED;
16
- // 重连相关
17
7
  reconnectAttempts = 0;
18
8
  reconnectTimer = null;
19
- // 请求管理
20
9
  requestId = 0;
21
10
  pendingRequests = new Map();
22
- // ============================================================================
23
- // 构造函数
24
- // ============================================================================
11
+ connectedListeners = new Set();
25
12
  constructor(config = {}, callbacks = {}) {
26
13
  this.config = {
27
14
  url: this.buildWebSocketUrl(config.url),
28
15
  reconnectInterval: config.reconnectInterval ?? 3000,
29
16
  maxReconnectAttempts: config.maxReconnectAttempts ?? 10,
30
- requestTimeout: config.requestTimeout ?? 10000
17
+ requestTimeout: config.requestTimeout ?? 10000,
31
18
  };
32
19
  this.callbacks = callbacks;
33
20
  }
34
- // ============================================================================
35
- // 公共 API
36
- // ============================================================================
37
- /**
38
- * 建立 WebSocket 连接
39
- */
21
+ onConnectionChange(listener) {
22
+ this.connectedListeners.add(listener);
23
+ return () => this.connectedListeners.delete(listener);
24
+ }
25
+ notifyConnection(connected) {
26
+ for (const l of this.connectedListeners)
27
+ l(connected);
28
+ }
40
29
  connect() {
41
- if (this.state === ConnectionState.CONNECTED || this.state === ConnectionState.CONNECTING) {
30
+ if (this.state === ConnectionState.CONNECTED || this.state === ConnectionState.CONNECTING)
42
31
  return;
43
- }
44
32
  this.setState(ConnectionState.CONNECTING);
45
33
  try {
46
34
  this.ws = new WebSocket(this.config.url);
47
35
  this.attachEventHandlers();
48
36
  }
49
37
  catch (error) {
50
- this.handleConnectionError(new ConnectionError('Failed to create WebSocket', error));
38
+ this.handleConnectionError(new ConnectionError("Failed to create WebSocket", error));
51
39
  }
52
40
  }
53
- /**
54
- * 断开 WebSocket 连接
55
- */
56
41
  disconnect() {
57
42
  this.clearReconnectTimer();
58
43
  this.clearPendingRequests();
@@ -61,351 +46,226 @@ export class WebSocketManager {
61
46
  this.ws = null;
62
47
  }
63
48
  this.setState(ConnectionState.DISCONNECTED);
64
- store.dispatch(setConnected(false));
49
+ this.notifyConnection(false);
65
50
  }
66
- /**
67
- * 发送普通消息
68
- */
69
51
  send(message) {
70
- if (!this.isConnected()) {
71
- throw new WebSocketError('WebSocket is not connected', 'NOT_CONNECTED');
72
- }
52
+ if (!this.isConnected())
53
+ throw new WebSocketError("WebSocket is not connected", "NOT_CONNECTED");
73
54
  try {
74
55
  this.ws.send(JSON.stringify(message));
75
56
  }
76
57
  catch (error) {
77
- throw new MessageError('Failed to send message', error);
58
+ throw new MessageError("Failed to send message", error);
78
59
  }
79
60
  }
80
- /**
81
- * 发送请求并等待响应
82
- */
83
61
  async sendRequest(message) {
84
- if (!this.isConnected()) {
85
- throw new WebSocketError('WebSocket is not connected', 'NOT_CONNECTED');
86
- }
62
+ if (!this.isConnected())
63
+ throw new WebSocketError("WebSocket is not connected", "NOT_CONNECTED");
87
64
  return new Promise((resolve, reject) => {
88
65
  const requestId = ++this.requestId;
89
66
  const messageWithId = { ...message, requestId };
90
- // 设置超时计时器
91
67
  const timer = setTimeout(() => {
92
68
  this.pendingRequests.delete(requestId);
93
69
  reject(new RequestTimeoutError(requestId));
94
70
  }, this.config.requestTimeout);
95
- // 存储请求信息
96
- this.pendingRequests.set(requestId, { resolve, reject, timer });
71
+ this.pendingRequests.set(requestId, { resolve: resolve, reject, timer });
97
72
  try {
98
73
  this.ws.send(JSON.stringify(messageWithId));
99
74
  }
100
75
  catch (error) {
101
76
  this.pendingRequests.delete(requestId);
102
77
  clearTimeout(timer);
103
- reject(new MessageError('Failed to send request', error));
78
+ reject(new MessageError("Failed to send request", error));
104
79
  }
105
80
  });
106
81
  }
107
- /**
108
- * 检查连接状态
109
- */
110
82
  isConnected() {
111
83
  return this.ws?.readyState === WebSocket.OPEN;
112
84
  }
113
- /**
114
- * 获取当前状态
115
- */
116
85
  getState() {
117
86
  return this.state;
118
87
  }
119
- // ============================================================================
120
- // 配置管理 API
121
- // ============================================================================
122
- /**
123
- * 获取插件配置
124
- */
125
88
  async getConfig(pluginName) {
126
- return this.sendRequest({
127
- type: 'config:get',
128
- pluginName
129
- });
89
+ return this.sendRequest({ type: "config:get", pluginName });
130
90
  }
131
- /**
132
- * 设置插件配置
133
- */
134
91
  async setConfig(pluginName, config) {
135
- return this.sendRequest({
136
- type: 'config:set',
137
- pluginName,
138
- data: config
139
- });
92
+ return this.sendRequest({ type: "config:set", pluginName, data: config });
140
93
  }
141
- /**
142
- * 获取插件 Schema
143
- */
144
94
  async getSchema(pluginName) {
145
- return this.sendRequest({
146
- type: 'schema:get',
147
- pluginName
148
- });
95
+ return this.sendRequest({ type: "schema:get", pluginName });
149
96
  }
150
- /**
151
- * 获取所有配置
152
- */
153
97
  async getAllConfigs() {
154
- return this.sendRequest({
155
- type: 'config:get-all'
156
- });
98
+ return this.sendRequest({ type: "config:get-all" });
157
99
  }
158
- /**
159
- * 获取所有 Schema
160
- */
161
100
  async getAllSchemas() {
162
- return this.sendRequest({
163
- type: 'schema:get-all'
164
- });
101
+ return this.sendRequest({ type: "schema:get-all" });
165
102
  }
166
- // ============================================================================
167
- // 配置文件原始 YAML 读写
168
- // ============================================================================
169
103
  async getConfigYaml() {
170
- return this.sendRequest({ type: 'config:get-yaml' });
104
+ return this.sendRequest({ type: "config:get-yaml" });
171
105
  }
172
106
  async saveConfigYaml(yaml) {
173
- return this.sendRequest({ type: 'config:save-yaml', yaml });
107
+ return this.sendRequest({ type: "config:save-yaml", yaml });
174
108
  }
175
- // ============================================================================
176
- // 环境变量文件管理
177
- // ============================================================================
178
109
  async getEnvList() {
179
- return this.sendRequest({ type: 'env:list' });
110
+ return this.sendRequest({ type: "env:list" });
180
111
  }
181
112
  async getEnvFile(filename) {
182
- return this.sendRequest({ type: 'env:get', filename });
113
+ return this.sendRequest({ type: "env:get", filename });
183
114
  }
184
115
  async saveEnvFile(filename, content) {
185
- return this.sendRequest({ type: 'env:save', filename, content });
116
+ return this.sendRequest({ type: "env:save", filename, content });
186
117
  }
187
- // ============================================================================
188
- // 文件管理
189
- // ============================================================================
190
118
  async getFileTree() {
191
- return this.sendRequest({ type: 'files:tree' });
119
+ return this.sendRequest({ type: "files:tree" });
192
120
  }
193
121
  async readFile(filePath) {
194
- return this.sendRequest({ type: 'files:read', filePath });
122
+ return this.sendRequest({ type: "files:read", filePath });
195
123
  }
196
124
  async saveFile(filePath, content) {
197
- return this.sendRequest({ type: 'files:save', filePath, content });
125
+ return this.sendRequest({ type: "files:save", filePath, content });
198
126
  }
199
- // ============================================================================
200
- // 数据库管理
201
- // ============================================================================
202
127
  async getDbInfo() {
203
- return this.sendRequest({ type: 'db:info' });
128
+ return this.sendRequest({ type: "db:info" });
204
129
  }
205
130
  async getDbTables() {
206
- return this.sendRequest({ type: 'db:tables' });
131
+ return this.sendRequest({ type: "db:tables" });
207
132
  }
208
133
  async dbSelect(table, page, pageSize, where) {
209
- return this.sendRequest({ type: 'db:select', table, page, pageSize, where });
134
+ return this.sendRequest({ type: "db:select", table, page, pageSize, where });
210
135
  }
211
136
  async dbInsert(table, row) {
212
- return this.sendRequest({ type: 'db:insert', table, row });
137
+ return this.sendRequest({ type: "db:insert", table, row });
213
138
  }
214
139
  async dbUpdate(table, row, where) {
215
- return this.sendRequest({ type: 'db:update', table, row, where });
140
+ return this.sendRequest({ type: "db:update", table, row, where });
216
141
  }
217
142
  async dbDelete(table, where) {
218
- return this.sendRequest({ type: 'db:delete', table, where });
143
+ return this.sendRequest({ type: "db:delete", table, where });
219
144
  }
220
145
  async dbDropTable(table) {
221
- return this.sendRequest({ type: 'db:drop-table', table });
146
+ return this.sendRequest({ type: "db:drop-table", table });
222
147
  }
223
148
  async kvGet(table, key) {
224
- return this.sendRequest({ type: 'db:kv:get', table, key });
149
+ return this.sendRequest({ type: "db:kv:get", table, key });
225
150
  }
226
151
  async kvSet(table, key, value, ttl) {
227
- return this.sendRequest({ type: 'db:kv:set', table, key, value, ttl });
152
+ return this.sendRequest({ type: "db:kv:set", table, key, value, ttl });
228
153
  }
229
154
  async kvDelete(table, key) {
230
- return this.sendRequest({ type: 'db:kv:delete', table, key });
155
+ return this.sendRequest({ type: "db:kv:delete", table, key });
231
156
  }
232
157
  async kvGetEntries(table) {
233
- return this.sendRequest({ type: 'db:kv:entries', table });
234
- }
235
- // ============================================================================
236
- // 私有方法
237
- // ============================================================================
238
- /**
239
- * 构建 WebSocket URL
240
- */
158
+ return this.sendRequest({ type: "db:kv:entries", table });
159
+ }
241
160
  buildWebSocketUrl(customUrl) {
242
- if (customUrl) {
161
+ if (customUrl)
243
162
  return customUrl;
244
- }
245
- const protocol = window.location.protocol === 'https:' ? 'wss:' : 'ws:';
246
- const host = window.location.host;
247
- return `${protocol}//${host}/server`;
163
+ const protocol = window.location.protocol === "https:" ? "wss:" : "ws:";
164
+ return `${protocol}//${window.location.host}/server`;
248
165
  }
249
- /**
250
- * 设置连接状态
251
- */
252
166
  setState(newState) {
253
- const oldState = this.state;
254
167
  this.state = newState;
255
- console.debug(`[WebSocket] State changed: ${oldState} -> ${newState}`);
256
168
  }
257
- /**
258
- * 绑定事件处理器
259
- */
260
169
  attachEventHandlers() {
261
170
  if (!this.ws)
262
171
  return;
263
- this.ws.onopen = () => {
264
- this.handleConnectionOpen();
265
- };
266
- this.ws.onmessage = (event) => {
267
- this.handleMessage(event);
268
- };
269
- this.ws.onclose = (event) => {
270
- this.handleConnectionClose(event);
271
- };
272
- this.ws.onerror = (event) => {
273
- this.handleConnectionError(new ConnectionError('WebSocket error', event));
274
- };
172
+ this.ws.onopen = () => this.handleConnectionOpen();
173
+ this.ws.onmessage = (event) => this.handleMessage(event);
174
+ this.ws.onclose = () => this.handleConnectionClose();
175
+ this.ws.onerror = (event) => this.handleConnectionError(new ConnectionError("WebSocket error", event));
275
176
  }
276
- /**
277
- * 处理连接打开
278
- */
279
177
  handleConnectionOpen() {
280
178
  this.setState(ConnectionState.CONNECTED);
281
179
  this.reconnectAttempts = 0;
282
- // 更新 Redux 状态
283
- store.dispatch(setConnected(true));
284
- // 初始化数据
285
- this.initializeData();
286
- // 触发回调
180
+ this.notifyConnection(true);
287
181
  this.callbacks.onConnect?.();
288
182
  }
289
- /**
290
- * 处理消息接收
291
- */
292
183
  handleMessage(event) {
293
184
  try {
294
185
  const message = JSON.parse(event.data);
295
- // 处理请求响应
296
186
  if (message.requestId && this.pendingRequests.has(message.requestId)) {
297
187
  this.handleRequestResponse(message);
298
188
  return;
299
189
  }
300
- // 处理广播消息
301
- MessageHandler.handle(message);
190
+ this.handleBroadcast(message);
302
191
  this.callbacks.onMessage?.(message);
303
192
  }
304
193
  catch (error) {
305
- console.error('[WebSocket] Message parsing error:', error);
194
+ console.error("[WebSocket] Message parsing error:", error);
195
+ }
196
+ }
197
+ handleBroadcast(message) {
198
+ const t = message.type;
199
+ if (t === "bot:request" || t === "bot:notice" || t === "bot:message") {
200
+ if (typeof window !== "undefined") {
201
+ window.dispatchEvent(new CustomEvent("zhin-console-bot-push", { detail: message }));
202
+ }
203
+ return;
204
+ }
205
+ if (t === "hmr:reload") {
206
+ console.info(`[HMR] File changed, reloading...`);
207
+ window.location.reload();
208
+ return;
209
+ }
210
+ if (t === "system:restarting") {
211
+ console.info("[System] Server restarting, will reload shortly...");
212
+ setTimeout(() => window.location.reload(), 3000);
213
+ return;
306
214
  }
307
215
  }
308
- /**
309
- * 处理请求响应
310
- */
311
216
  handleRequestResponse(message) {
312
217
  const { requestId } = message;
313
- const pendingRequest = this.pendingRequests.get(requestId);
314
- if (!pendingRequest) {
218
+ const pending = this.pendingRequests.get(requestId);
219
+ if (!pending)
315
220
  return;
316
- }
317
221
  this.pendingRequests.delete(requestId);
318
- clearTimeout(pendingRequest.timer);
222
+ clearTimeout(pending.timer);
319
223
  if (message.error) {
320
- pendingRequest.reject(new WebSocketError(message.error, 'SERVER_ERROR'));
224
+ pending.reject(new WebSocketError(message.error, "SERVER_ERROR"));
321
225
  }
322
226
  else {
323
- pendingRequest.resolve(message.data);
227
+ pending.resolve(message.data);
324
228
  }
325
229
  }
326
- /**
327
- * 处理连接关闭
328
- */
329
- handleConnectionClose(event) {
230
+ handleConnectionClose() {
330
231
  this.ws = null;
331
- store.dispatch(setConnected(false));
332
- if (this.state === ConnectionState.DISCONNECTED) {
333
- // 主动断开,不重连
232
+ this.notifyConnection(false);
233
+ if (this.state === ConnectionState.DISCONNECTED)
334
234
  return;
335
- }
336
235
  this.setState(ConnectionState.RECONNECTING);
337
236
  this.callbacks.onDisconnect?.();
338
237
  this.scheduleReconnect();
339
238
  }
340
- /**
341
- * 处理连接错误
342
- */
343
239
  handleConnectionError(error) {
344
240
  this.clearReconnectTimer();
345
241
  this.setState(ConnectionState.ERROR);
346
- console.error('[WebSocket] Connection error:', error);
242
+ console.error("[WebSocket] Connection error:", error);
347
243
  this.callbacks.onError?.(error);
348
244
  }
349
- /**
350
- * 安排重连
351
- */
352
245
  scheduleReconnect() {
353
246
  if (this.reconnectAttempts >= this.config.maxReconnectAttempts) {
354
- console.error('[WebSocket] Max reconnect attempts reached');
355
247
  this.setState(ConnectionState.ERROR);
356
248
  return;
357
249
  }
358
250
  this.reconnectAttempts++;
359
251
  const delay = this.config.reconnectInterval * this.reconnectAttempts;
360
- console.debug(`[WebSocket] Reconnecting in ${delay}ms (attempt ${this.reconnectAttempts}/${this.config.maxReconnectAttempts})`);
361
252
  this.reconnectTimer = setTimeout(() => {
362
- if (this.state === ConnectionState.RECONNECTING) {
253
+ if (this.state === ConnectionState.RECONNECTING)
363
254
  this.connect();
364
- }
365
255
  }, delay);
366
256
  }
367
- /**
368
- * 清除重连计时器
369
- */
370
257
  clearReconnectTimer() {
371
258
  if (this.reconnectTimer) {
372
259
  clearTimeout(this.reconnectTimer);
373
260
  this.reconnectTimer = null;
374
261
  }
375
262
  }
376
- /**
377
- * 清除所有待处理请求
378
- */
379
263
  clearPendingRequests() {
380
- for (const [requestId, { reject, timer }] of this.pendingRequests) {
264
+ for (const [, { reject, timer }] of this.pendingRequests) {
381
265
  clearTimeout(timer);
382
- reject(new WebSocketError('Connection closed', 'CONNECTION_CLOSED'));
266
+ reject(new WebSocketError("Connection closed", "CONNECTION_CLOSED"));
383
267
  }
384
268
  this.pendingRequests.clear();
385
269
  }
386
- /**
387
- * 初始化数据
388
- */
389
- async initializeData() {
390
- try {
391
- // 并行获取所有配置和 Schema
392
- const [configs, schemas] = await Promise.all([
393
- this.getAllConfigs().catch(error => {
394
- console.warn('[WebSocket] Failed to load configs:', error);
395
- return {};
396
- }),
397
- this.getAllSchemas().catch(error => {
398
- console.warn('[WebSocket] Failed to load schemas:', error);
399
- return {};
400
- })
401
- ]);
402
- // 更新 Redux 状态
403
- store.dispatch(updateConfigs(configs));
404
- store.dispatch(updateSchemas(schemas));
405
- }
406
- catch (error) {
407
- console.error('[WebSocket] Data initialization failed:', error);
408
- }
409
- }
410
270
  }
411
271
  //# sourceMappingURL=manager.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"manager.js","sourceRoot":"","sources":["../../client/websocket/manager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"manager.js","sourceRoot":"","sources":["../../client/websocket/manager.ts"],"names":[],"mappings":"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"}