@zhin.js/console 1.0.5 → 1.0.6

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/lib/index.js CHANGED
@@ -1,4 +1,4 @@
1
- import { register, useContext } from '@zhin.js/core';
1
+ import { register, useContext, useApp } from '@zhin.js/core';
2
2
  import react from '@vitejs/plugin-react';
3
3
  import WebSocket from 'ws';
4
4
  import { createServer } from 'vite';
@@ -148,6 +148,160 @@ useContext('router', async (router) => {
148
148
  type: 'init-data',
149
149
  timestamp: Date.now()
150
150
  }));
151
+ // 处理 WebSocket 消息
152
+ ws.on('message', async (data) => {
153
+ try {
154
+ const message = JSON.parse(data.toString());
155
+ const { type, pluginName, requestId } = message;
156
+ // 获取应用实例
157
+ const app = useApp();
158
+ switch (type) {
159
+ case 'config:get':
160
+ try {
161
+ let config;
162
+ if (pluginName === 'app') {
163
+ config = app.getConfig();
164
+ }
165
+ else {
166
+ const plugin = app.findPluginByName(pluginName);
167
+ if (!plugin) {
168
+ throw new Error(`Plugin ${pluginName} not found`);
169
+ }
170
+ config = plugin.config;
171
+ }
172
+ ws.send(JSON.stringify({
173
+ requestId,
174
+ data: config
175
+ }));
176
+ }
177
+ catch (error) {
178
+ ws.send(JSON.stringify({
179
+ requestId,
180
+ error: error.message
181
+ }));
182
+ }
183
+ break;
184
+ case 'config:set':
185
+ try {
186
+ const { data: newConfig } = message;
187
+ if (pluginName === 'app') {
188
+ app.config = newConfig;
189
+ }
190
+ else {
191
+ const plugin = app.findPluginByName(pluginName);
192
+ if (!plugin) {
193
+ throw new Error(`Plugin ${pluginName} not found`);
194
+ }
195
+ plugin.config = newConfig;
196
+ }
197
+ // 响应成功
198
+ ws.send(JSON.stringify({
199
+ requestId,
200
+ data: 'success'
201
+ }));
202
+ // 广播配置更新
203
+ webServer.ws.clients.forEach((client) => {
204
+ if (client.readyState === 1) { // WebSocket.OPEN
205
+ client.send(JSON.stringify({
206
+ type: 'config:updated',
207
+ pluginName,
208
+ data: newConfig
209
+ }));
210
+ }
211
+ });
212
+ }
213
+ catch (error) {
214
+ ws.send(JSON.stringify({
215
+ requestId,
216
+ error: error.message
217
+ }));
218
+ }
219
+ break;
220
+ case 'schema:get':
221
+ try {
222
+ let schema;
223
+ if (pluginName === 'app') {
224
+ schema = app.schema?.toJSON();
225
+ }
226
+ else {
227
+ const plugin = app.findPluginByName(pluginName);
228
+ if (!plugin) {
229
+ throw new Error(`Plugin ${pluginName} not found`);
230
+ }
231
+ schema = plugin.schema?.toJSON();
232
+ }
233
+ ws.send(JSON.stringify({
234
+ requestId,
235
+ data: schema
236
+ }));
237
+ }
238
+ catch (error) {
239
+ ws.send(JSON.stringify({
240
+ requestId,
241
+ error: error.message
242
+ }));
243
+ }
244
+ break;
245
+ case 'config:get-all':
246
+ try {
247
+ const configs = {};
248
+ // 获取 App 配置
249
+ configs['app'] = app.getConfig();
250
+ // 获取所有插件配置
251
+ for (const plugin of app.dependencyList) {
252
+ if (plugin.config && Object.keys(plugin.config).length > 0) {
253
+ configs[plugin.name] = plugin.config;
254
+ }
255
+ }
256
+ ws.send(JSON.stringify({
257
+ requestId,
258
+ data: configs
259
+ }));
260
+ }
261
+ catch (error) {
262
+ ws.send(JSON.stringify({
263
+ requestId,
264
+ error: error.message
265
+ }));
266
+ }
267
+ break;
268
+ case 'schema:get-all':
269
+ try {
270
+ const schemas = {};
271
+ // 获取 App Schema
272
+ const appSchema = app.schema?.toJSON();
273
+ if (appSchema) {
274
+ schemas['app'] = appSchema;
275
+ }
276
+ // 获取所有插件 Schema
277
+ for (const plugin of app.dependencyList) {
278
+ const schema = plugin.schema?.toJSON();
279
+ if (schema) {
280
+ schemas[plugin.name] = schema;
281
+ }
282
+ }
283
+ ws.send(JSON.stringify({
284
+ requestId,
285
+ data: schemas
286
+ }));
287
+ }
288
+ catch (error) {
289
+ ws.send(JSON.stringify({
290
+ requestId,
291
+ error: error.message
292
+ }));
293
+ }
294
+ break;
295
+ // 其他消息类型保持不变,让 console 插件自己处理
296
+ }
297
+ }
298
+ catch (error) {
299
+ console.error('WebSocket 消息处理错误:', error);
300
+ ws.send(JSON.stringify({
301
+ error: 'Invalid message format'
302
+ }));
303
+ }
304
+ });
151
305
  ws.on('close', () => {
152
306
  });
153
307
  ws.on('error', (error) => {
package/lib/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@zhin.js/console",
3
- "version": "1.0.5",
3
+ "version": "1.0.6",
4
4
  "description": "Zhin 控制台",
5
5
  "type": "module",
6
6
  "main": "./lib/index.js",
@@ -25,10 +25,10 @@
25
25
  },
26
26
  "peerDependencies": {
27
27
  "@types/ws": "^8.18.1",
28
- "@zhin.js/client": "^1.0.3",
29
- "@zhin.js/http": "^1.0.4",
30
- "@zhin.js/core": "^1.0.7",
31
- "@zhin.js/types": "^1.0.2"
28
+ "@zhin.js/client": "^1.0.4",
29
+ "@zhin.js/http": "^1.0.5",
30
+ "@zhin.js/core": "^1.0.8",
31
+ "@zhin.js/types": "^1.0.3"
32
32
  },
33
33
  "peerDependenciesMeta": {
34
34
  "@zhin.js/types": {
package/src/index.ts CHANGED
@@ -1,4 +1,4 @@
1
- import {register, useContext} from '@zhin.js/core';
1
+ import {register, useContext, useApp} from '@zhin.js/core';
2
2
  import react from '@vitejs/plugin-react';
3
3
  import WebSocket,{WebSocketServer} from 'ws';
4
4
  import {createServer,ViteDevServer,searchForWorkspaceRoot} from 'vite';
@@ -174,6 +174,170 @@ useContext('router', async (router) => {
174
174
  timestamp: Date.now()
175
175
  }));
176
176
 
177
+ // 处理 WebSocket 消息
178
+ ws.on('message', async (data) => {
179
+ try {
180
+ const message = JSON.parse(data.toString());
181
+ const { type, pluginName, requestId } = message;
182
+
183
+ // 获取应用实例
184
+ const app = useApp();
185
+
186
+ switch (type) {
187
+ case 'config:get':
188
+ try {
189
+ let config;
190
+ if (pluginName === 'app') {
191
+ config = app.getConfig();
192
+ } else {
193
+ const plugin = app.findPluginByName(pluginName);
194
+ if (!plugin) {
195
+ throw new Error(`Plugin ${pluginName} not found`);
196
+ }
197
+ config = plugin.config;
198
+ }
199
+
200
+ ws.send(JSON.stringify({
201
+ requestId,
202
+ data: config
203
+ }));
204
+ } catch (error) {
205
+ ws.send(JSON.stringify({
206
+ requestId,
207
+ error: (error as Error).message
208
+ }));
209
+ }
210
+ break;
211
+
212
+ case 'config:set':
213
+ try {
214
+ const { data: newConfig } = message;
215
+
216
+ if (pluginName === 'app') {
217
+ app.config = newConfig;
218
+ } else {
219
+ const plugin = app.findPluginByName(pluginName);
220
+ if (!plugin) {
221
+ throw new Error(`Plugin ${pluginName} not found`);
222
+ }
223
+ plugin.config = newConfig;
224
+ }
225
+
226
+ // 响应成功
227
+ ws.send(JSON.stringify({
228
+ requestId,
229
+ data: 'success'
230
+ }));
231
+
232
+ // 广播配置更新
233
+ webServer.ws.clients.forEach((client) => {
234
+ if (client.readyState === 1) { // WebSocket.OPEN
235
+ client.send(JSON.stringify({
236
+ type: 'config:updated',
237
+ pluginName,
238
+ data: newConfig
239
+ }));
240
+ }
241
+ });
242
+ } catch (error) {
243
+ ws.send(JSON.stringify({
244
+ requestId,
245
+ error: (error as Error).message
246
+ }));
247
+ }
248
+ break;
249
+
250
+ case 'schema:get':
251
+ try {
252
+ let schema;
253
+ if (pluginName === 'app') {
254
+ schema = app.schema?.toJSON();
255
+ } else {
256
+ const plugin = app.findPluginByName(pluginName);
257
+ if (!plugin) {
258
+ throw new Error(`Plugin ${pluginName} not found`);
259
+ }
260
+ schema = plugin.schema?.toJSON();
261
+ }
262
+
263
+ ws.send(JSON.stringify({
264
+ requestId,
265
+ data: schema
266
+ }));
267
+ } catch (error) {
268
+ ws.send(JSON.stringify({
269
+ requestId,
270
+ error: (error as Error).message
271
+ }));
272
+ }
273
+ break;
274
+
275
+ case 'config:get-all':
276
+ try {
277
+ const configs: Record<string, any> = {};
278
+
279
+ // 获取 App 配置
280
+ configs['app'] = app.getConfig();
281
+
282
+ // 获取所有插件配置
283
+ for (const plugin of app.dependencyList) {
284
+ if (plugin.config && Object.keys(plugin.config).length > 0) {
285
+ configs[plugin.name] = plugin.config;
286
+ }
287
+ }
288
+
289
+ ws.send(JSON.stringify({
290
+ requestId,
291
+ data: configs
292
+ }));
293
+ } catch (error) {
294
+ ws.send(JSON.stringify({
295
+ requestId,
296
+ error: (error as Error).message
297
+ }));
298
+ }
299
+ break;
300
+
301
+ case 'schema:get-all':
302
+ try {
303
+ const schemas: Record<string, any> = {};
304
+
305
+ // 获取 App Schema
306
+ const appSchema = app.schema?.toJSON();
307
+ if (appSchema) {
308
+ schemas['app'] = appSchema;
309
+ }
310
+
311
+ // 获取所有插件 Schema
312
+ for (const plugin of app.dependencyList) {
313
+ const schema = plugin.schema?.toJSON();
314
+ if (schema) {
315
+ schemas[plugin.name] = schema;
316
+ }
317
+ }
318
+
319
+ ws.send(JSON.stringify({
320
+ requestId,
321
+ data: schemas
322
+ }));
323
+ } catch (error) {
324
+ ws.send(JSON.stringify({
325
+ requestId,
326
+ error: (error as Error).message
327
+ }));
328
+ }
329
+ break;
330
+
331
+ // 其他消息类型保持不变,让 console 插件自己处理
332
+ }
333
+ } catch (error) {
334
+ console.error('WebSocket 消息处理错误:', error);
335
+ ws.send(JSON.stringify({
336
+ error: 'Invalid message format'
337
+ }));
338
+ }
339
+ });
340
+
177
341
  ws.on('close', () => {
178
342
  });
179
343