@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,54 +0,0 @@
1
- /**
2
- * 配置管理 Redux Slice
3
- * 通过 WebSocket 管理插件配置
4
- */
5
- export interface ConfigState {
6
- configs: Record<string, any>;
7
- schemas: Record<string, any>;
8
- loading: Record<string, boolean>;
9
- errors: Record<string, string | null>;
10
- connected: boolean;
11
- }
12
- export interface ConfigMessage {
13
- type: 'config:get' | 'config:set' | 'config:updated' | 'schema:get' | 'schema:updated';
14
- pluginName: string;
15
- data?: any;
16
- error?: string;
17
- }
18
- export declare const setConnected: import("@reduxjs/toolkit").ActionCreatorWithPayload<boolean, "config/setConnected">, setLoading: import("@reduxjs/toolkit").ActionCreatorWithPayload<{
19
- pluginName: string;
20
- loading: boolean;
21
- }, "config/setLoading">, setError: import("@reduxjs/toolkit").ActionCreatorWithPayload<{
22
- pluginName: string;
23
- error: string | null;
24
- }, "config/setError">, updateConfig: import("@reduxjs/toolkit").ActionCreatorWithPayload<{
25
- pluginName: string;
26
- config: any;
27
- }, "config/updateConfig">, updateSchema: import("@reduxjs/toolkit").ActionCreatorWithPayload<{
28
- pluginName: string;
29
- schema: any;
30
- }, "config/updateSchema">, updateConfigs: import("@reduxjs/toolkit").ActionCreatorWithPayload<Record<string, any>, "config/updateConfigs">, updateSchemas: import("@reduxjs/toolkit").ActionCreatorWithPayload<Record<string, any>, "config/updateSchemas">, removeConfig: import("@reduxjs/toolkit").ActionCreatorWithPayload<string, "config/removeConfig">, clearConfigs: import("@reduxjs/toolkit").ActionCreatorWithoutPayload<"config/clearConfigs">;
31
- declare const _default: import("@reduxjs/toolkit").Reducer<ConfigState>;
32
- export default _default;
33
- export declare const selectConfig: (state: {
34
- config: ConfigState;
35
- }, pluginName: string) => any;
36
- export declare const selectSchema: (state: {
37
- config: ConfigState;
38
- }, pluginName: string) => any;
39
- export declare const selectConfigLoading: (state: {
40
- config: ConfigState;
41
- }, pluginName: string) => boolean;
42
- export declare const selectConfigError: (state: {
43
- config: ConfigState;
44
- }, pluginName: string) => string | null;
45
- export declare const selectConfigConnected: (state: {
46
- config: ConfigState;
47
- }) => boolean;
48
- export declare const selectAllConfigs: (state: {
49
- config: ConfigState;
50
- }) => Record<string, any>;
51
- export declare const selectAllSchemas: (state: {
52
- config: ConfigState;
53
- }) => Record<string, any>;
54
- //# sourceMappingURL=config.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../client/store/reducers/config.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,MAAM,WAAW,WAAW;IAE1B,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IAE5B,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IAE5B,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAEhC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC,CAAA;IAErC,SAAS,EAAE,OAAO,CAAA;CACnB;AAWD,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,YAAY,GAAG,YAAY,GAAG,gBAAgB,GAAG,YAAY,GAAG,gBAAgB,CAAA;IACtF,UAAU,EAAE,MAAM,CAAA;IAClB,IAAI,CAAC,EAAE,GAAG,CAAA;IACV,KAAK,CAAC,EAAE,MAAM,CAAA;CACf;AAkED,eAAO,MACL,YAAY,uFACZ,UAAU;gBAxDgD,MAAM;aAAW,OAAO;yBAyDlF,QAAQ;gBAnDgD,MAAM;WAAS,MAAM,GAAG,IAAI;uBAoDpF,YAAY;gBA9CgD,MAAM;YAAU,GAAG;2BA+C/E,YAAY;gBAvCgD,MAAM;YAAU,GAAG;2BAwC/E,aAAa,oGACb,aAAa,oGACb,YAAY,sFACZ,YAAY,+EACS,CAAA;;AAEvB,wBAAkC;AAGlC,eAAO,MAAM,YAAY,GAAI,OAAO;IAAE,MAAM,EAAE,WAAW,CAAA;CAAE,EAAE,YAAY,MAAM,QAC7C,CAAA;AAElC,eAAO,MAAM,YAAY,GAAI,OAAO;IAAE,MAAM,EAAE,WAAW,CAAA;CAAE,EAAE,YAAY,MAAM,QAC7C,CAAA;AAElC,eAAO,MAAM,mBAAmB,GAAI,OAAO;IAAE,MAAM,EAAE,WAAW,CAAA;CAAE,EAAE,YAAY,MAAM,YAC3C,CAAA;AAE3C,eAAO,MAAM,iBAAiB,GAAI,OAAO;IAAE,MAAM,EAAE,WAAW,CAAA;CAAE,EAAE,YAAY,MAAM,kBAC3C,CAAA;AAEzC,eAAO,MAAM,qBAAqB,GAAI,OAAO;IAAE,MAAM,EAAE,WAAW,CAAA;CAAE,YAC5C,CAAA;AAExB,eAAO,MAAM,gBAAgB,GAAI,OAAO;IAAE,MAAM,EAAE,WAAW,CAAA;CAAE,wBACzC,CAAA;AAEtB,eAAO,MAAM,gBAAgB,GAAI,OAAO;IAAE,MAAM,EAAE,WAAW,CAAA;CAAE,wBACzC,CAAA"}
@@ -1,78 +0,0 @@
1
- /**
2
- * 配置管理 Redux Slice
3
- * 通过 WebSocket 管理插件配置
4
- */
5
- import { createSlice } from '@reduxjs/toolkit';
6
- const initialState = {
7
- configs: {},
8
- schemas: {},
9
- loading: {},
10
- errors: {},
11
- connected: false
12
- };
13
- const configSlice = createSlice({
14
- name: 'config',
15
- initialState,
16
- reducers: {
17
- // WebSocket 连接状态
18
- setConnected: (state, action) => {
19
- state.connected = action.payload;
20
- },
21
- // 设置配置加载状态
22
- setLoading: (state, action) => {
23
- const { pluginName, loading } = action.payload;
24
- state.loading[pluginName] = loading;
25
- },
26
- // 设置错误信息
27
- setError: (state, action) => {
28
- const { pluginName, error } = action.payload;
29
- state.errors[pluginName] = error;
30
- },
31
- // 更新插件配置
32
- updateConfig: (state, action) => {
33
- const { pluginName, config } = action.payload;
34
- state.configs[pluginName] = config;
35
- state.loading[pluginName] = false;
36
- state.errors[pluginName] = null;
37
- },
38
- // 更新插件 Schema
39
- updateSchema: (state, action) => {
40
- const { pluginName, schema } = action.payload;
41
- state.schemas[pluginName] = schema;
42
- },
43
- // 批量更新配置
44
- updateConfigs: (state, action) => {
45
- state.configs = { ...state.configs, ...action.payload };
46
- },
47
- // 批量更新 Schema
48
- updateSchemas: (state, action) => {
49
- state.schemas = { ...state.schemas, ...action.payload };
50
- },
51
- // 清除插件配置
52
- removeConfig: (state, action) => {
53
- const pluginName = action.payload;
54
- delete state.configs[pluginName];
55
- delete state.schemas[pluginName];
56
- delete state.loading[pluginName];
57
- delete state.errors[pluginName];
58
- },
59
- // 清除所有配置
60
- clearConfigs: (state) => {
61
- state.configs = {};
62
- state.schemas = {};
63
- state.loading = {};
64
- state.errors = {};
65
- }
66
- }
67
- });
68
- export const { setConnected, setLoading, setError, updateConfig, updateSchema, updateConfigs, updateSchemas, removeConfig, clearConfigs } = configSlice.actions;
69
- export default configSlice.reducer;
70
- // Selectors
71
- export const selectConfig = (state, pluginName) => state.config.configs[pluginName];
72
- export const selectSchema = (state, pluginName) => state.config.schemas[pluginName];
73
- export const selectConfigLoading = (state, pluginName) => state.config.loading[pluginName] || false;
74
- export const selectConfigError = (state, pluginName) => state.config.errors[pluginName] || null;
75
- export const selectConfigConnected = (state) => state.config.connected;
76
- export const selectAllConfigs = (state) => state.config.configs;
77
- export const selectAllSchemas = (state) => state.config.schemas;
78
- //# sourceMappingURL=config.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../../../client/store/reducers/config.ts"],"names":[],"mappings":"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"}
@@ -1,13 +0,0 @@
1
- import { Reducer } from "@reduxjs/toolkit";
2
- import ui from "./ui";
3
- import route from "./route";
4
- import script from "./script";
5
- import config from "./config";
6
- export interface Reducers {
7
- ui: ReturnType<typeof ui>;
8
- route: ReturnType<typeof route>;
9
- script: ReturnType<typeof script>;
10
- config: ReturnType<typeof config>;
11
- }
12
- export declare const reducers: Record<keyof Reducers, Reducer<any, any>>;
13
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../client/store/reducers/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAA;AAC1C,OAAO,EAAE,MAAM,MAAM,CAAA;AACrB,OAAO,KAAK,MAAM,SAAS,CAAA;AAC3B,OAAO,MAAM,MAAM,UAAU,CAAA;AAC7B,OAAO,MAAM,MAAM,UAAU,CAAA;AAE7B,MAAM,WAAW,QAAQ;IACrB,EAAE,EAAE,UAAU,CAAC,OAAO,EAAE,CAAC,CAAA;IACzB,KAAK,EAAE,UAAU,CAAC,OAAO,KAAK,CAAC,CAAA;IAC/B,MAAM,EAAE,UAAU,CAAC,OAAO,MAAM,CAAC,CAAA;IACjC,MAAM,EAAE,UAAU,CAAC,OAAO,MAAM,CAAC,CAAA;CACpC;AAED,eAAO,MAAM,QAAQ,EAAE,MAAM,CAAC,MAAM,QAAQ,EAAE,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,CAK9D,CAAA"}
@@ -1,11 +0,0 @@
1
- import ui from "./ui";
2
- import route from "./route";
3
- import script from "./script";
4
- import config from "./config";
5
- export const reducers = {
6
- ui,
7
- route,
8
- script,
9
- config
10
- };
11
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../client/store/reducers/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,MAAM,CAAA;AACrB,OAAO,KAAK,MAAM,SAAS,CAAA;AAC3B,OAAO,MAAM,MAAM,UAAU,CAAA;AAC7B,OAAO,MAAM,MAAM,UAAU,CAAA;AAS7B,MAAM,CAAC,MAAM,QAAQ,GAA8C;IAC/D,EAAE;IACF,KAAK;IACL,MAAM;IACN,MAAM;CACT,CAAA"}
@@ -1,30 +0,0 @@
1
- import { ComponentType, ReactNode } from "react";
2
- export interface RouteMenuItem {
3
- key: string;
4
- path: string;
5
- title: string;
6
- index?: boolean;
7
- icon?: ReactNode;
8
- element?: ReactNode;
9
- Component?: ComponentType;
10
- children?: RouteMenuItem[];
11
- meta?: {
12
- hideInMenu?: boolean;
13
- requiresAuth?: boolean;
14
- order?: number;
15
- /** 侧栏分组标签,同组内按 order 排序 */
16
- group?: string;
17
- /** 主内容区全宽(无 max-w-7xl) */
18
- fullWidth?: boolean;
19
- };
20
- }
21
- export interface RouteState {
22
- routes: RouteMenuItem[];
23
- }
24
- export declare const addRoute: import("@reduxjs/toolkit").ActionCreatorWithPayload<RouteMenuItem, "route/addRoute">, removeRoute: import("@reduxjs/toolkit").ActionCreatorWithPayload<string, "route/removeRoute">, updateRoute: import("@reduxjs/toolkit").ActionCreatorWithPayload<{
25
- path: string;
26
- updates: Partial<RouteMenuItem>;
27
- }, "route/updateRoute">, setRoutes: import("@reduxjs/toolkit").ActionCreatorWithPayload<RouteMenuItem[], "route/setRoutes">, clearRoutes: import("@reduxjs/toolkit").ActionCreatorWithoutPayload<"route/clearRoutes">;
28
- declare const _default: import("@reduxjs/toolkit").Reducer<RouteState>;
29
- export default _default;
30
- //# sourceMappingURL=route.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"route.d.ts","sourceRoot":"","sources":["../../../client/store/reducers/route.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AAGhD,MAAM,WAAW,aAAa;IAC1B,GAAG,EAAE,MAAM,CAAA;IACX,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,IAAI,CAAC,EAAE,SAAS,CAAA;IAChB,OAAO,CAAC,EAAE,SAAS,CAAA;IACnB,SAAS,CAAC,EAAE,aAAa,CAAA;IACzB,QAAQ,CAAC,EAAE,aAAa,EAAE,CAAA;IAC1B,IAAI,CAAC,EAAE;QACH,UAAU,CAAC,EAAE,OAAO,CAAA;QACpB,YAAY,CAAC,EAAE,OAAO,CAAA;QACtB,KAAK,CAAC,EAAE,MAAM,CAAA;QACd,2BAA2B;QAC3B,KAAK,CAAC,EAAE,MAAM,CAAA;QACd,0BAA0B;QAC1B,SAAS,CAAC,EAAE,OAAO,CAAA;KACtB,CAAA;CACJ;AAED,MAAM,WAAW,UAAU;IACvB,MAAM,EAAE,aAAa,EAAE,CAAA;CAC1B;AAiGD,eAAO,MAAQ,QAAQ,wFAAE,WAAW,oFAAE,WAAW;UAhCU,MAAM;aAAW,OAAO,CAAC,aAAa,CAAC;yBAgC/C,SAAS,2FAAE,WAAW,6EAAuB,CAAA;;AAChG,wBAAiC"}
@@ -1,85 +0,0 @@
1
- import { createSlice } from "@reduxjs/toolkit";
2
- const initialState = {
3
- routes: []
4
- };
5
- // 辅助函数:查找最佳父路由
6
- const findBestParent = (routes, fullPath) => {
7
- const segments = fullPath.split('/').filter(Boolean);
8
- for (let i = segments.length - 1; i > 0; i--) {
9
- const parentPath = '/' + segments.slice(0, i).join('/');
10
- const parent = routes.find(r => r.path === parentPath);
11
- if (parent)
12
- return parent;
13
- }
14
- return routes.find(r => r.path === '/') || null;
15
- };
16
- // 辅助函数:计算相对路径
17
- const calculateRelativePath = (parentPath, fullPath) => {
18
- if (parentPath === '/')
19
- return fullPath;
20
- return fullPath.replace(parentPath + '/', '');
21
- };
22
- const routeSlice = createSlice({
23
- name: 'route',
24
- initialState,
25
- reducers: {
26
- addRoute: (state, action) => {
27
- const route = action.payload;
28
- const parent = findBestParent(state.routes, route.path);
29
- if (parent) {
30
- if (!parent.children)
31
- parent.children = [];
32
- const relativePath = calculateRelativePath(parent.path, route.path);
33
- parent.children.push({ ...route, path: relativePath });
34
- }
35
- else {
36
- state.routes.push(route);
37
- }
38
- state.routes.sort((a, b) => (a.meta?.order || 999) - (b.meta?.order || 999));
39
- },
40
- removeRoute: (state, action) => {
41
- const path = action.payload;
42
- const removeFromArray = (routes) => {
43
- const index = routes.findIndex(r => r.path === path);
44
- if (index >= 0) {
45
- routes.splice(index, 1);
46
- return true;
47
- }
48
- for (const route of routes) {
49
- if (route.children && removeFromArray(route.children)) {
50
- return true;
51
- }
52
- }
53
- return false;
54
- };
55
- removeFromArray(state.routes);
56
- },
57
- updateRoute: (state, action) => {
58
- const { path, updates } = action.payload;
59
- const updateInArray = (routes) => {
60
- const index = routes.findIndex(r => r.path === path);
61
- if (index >= 0) {
62
- routes[index] = { ...routes[index], ...updates };
63
- return true;
64
- }
65
- for (const route of routes) {
66
- if (route.children && updateInArray(route.children)) {
67
- return true;
68
- }
69
- }
70
- return false;
71
- };
72
- updateInArray(state.routes);
73
- },
74
- setRoutes: (state, action) => {
75
- state.routes = action.payload;
76
- state.routes.sort((a, b) => (a.meta?.order || 999) - (b.meta?.order || 999));
77
- },
78
- clearRoutes: (state) => {
79
- state.routes = [];
80
- }
81
- }
82
- });
83
- export const { addRoute, removeRoute, updateRoute, setRoutes, clearRoutes } = routeSlice.actions;
84
- export default routeSlice.reducer;
85
- //# sourceMappingURL=route.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"route.js","sourceRoot":"","sources":["../../../client/store/reducers/route.ts"],"names":[],"mappings":"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"}
@@ -1,13 +0,0 @@
1
- export interface ScriptState {
2
- entries: string[];
3
- loadedScripts: string[];
4
- /** 是否已收到 WebSocket 的首次 entries 同步 */
5
- synced: boolean;
6
- }
7
- export declare const loadScript: import("@reduxjs/toolkit").AsyncThunk<string, string, import("@reduxjs/toolkit").AsyncThunkConfig>;
8
- export declare const loadScripts: import("@reduxjs/toolkit").AsyncThunk<string[], string[], import("@reduxjs/toolkit").AsyncThunkConfig>;
9
- export declare const unloadScript: import("@reduxjs/toolkit").AsyncThunk<string, string, import("@reduxjs/toolkit").AsyncThunkConfig>;
10
- export declare const syncEntries: import("@reduxjs/toolkit").ActionCreatorWithPayload<string[], "script/syncEntries">, addEntry: import("@reduxjs/toolkit").ActionCreatorWithPayload<string, "script/addEntry">, removeEntry: import("@reduxjs/toolkit").ActionCreatorWithPayload<string, "script/removeEntry">;
11
- declare const _default: import("@reduxjs/toolkit").Reducer<ScriptState>;
12
- export default _default;
13
- //# sourceMappingURL=script.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"script.d.ts","sourceRoot":"","sources":["../../../client/store/reducers/script.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,WAAW;IACxB,OAAO,EAAE,MAAM,EAAE,CAAA;IACjB,aAAa,EAAE,MAAM,EAAE,CAAA;IACvB,qCAAqC;IACrC,MAAM,EAAE,OAAO,CAAA;CAClB;AASD,eAAO,MAAM,UAAU,oGAkBtB,CAAA;AAGD,eAAO,MAAM,WAAW,wGAWvB,CAAA;AAGD,eAAO,MAAM,YAAY,oGAOxB,CAAA;AAgDD,eAAO,MAAQ,WAAW,uFAAE,QAAQ,kFAAE,WAAW,mFAAwB,CAAA;;AACzE,wBAAkC"}
@@ -1,78 +0,0 @@
1
- import { createSlice, createAsyncThunk } from "@reduxjs/toolkit";
2
- const initialState = {
3
- entries: [],
4
- loadedScripts: [],
5
- synced: false
6
- };
7
- // AsyncThunk: 加载单个脚本
8
- export const loadScript = createAsyncThunk('script/loadScript', async (src) => {
9
- return new Promise((resolve, reject) => {
10
- const script = document.createElement('script');
11
- script.type = 'module';
12
- script.src = src;
13
- script.dataset.dynamicEntry = 'true';
14
- script.onload = () => resolve(src);
15
- script.onerror = (error) => {
16
- console.error('[Script] Load failed:', src);
17
- reject(error);
18
- };
19
- document.body.appendChild(script);
20
- });
21
- });
22
- // AsyncThunk: 批量加载脚本
23
- export const loadScripts = createAsyncThunk('script/loadScripts', async (entries, { dispatch }) => {
24
- const results = await Promise.allSettled(entries.map(entry => dispatch(loadScript(entry)).unwrap()));
25
- return results
26
- .filter((r) => r.status === 'fulfilled')
27
- .map(r => r.value);
28
- });
29
- // AsyncThunk: 卸载脚本
30
- export const unloadScript = createAsyncThunk('script/unloadScript', async (src) => {
31
- const scripts = document.querySelectorAll(`script[src="${src}"][data-dynamic-entry="true"]`);
32
- scripts.forEach(script => script.remove());
33
- return src;
34
- });
35
- const scriptSlice = createSlice({
36
- name: 'script',
37
- initialState,
38
- reducers: {
39
- syncEntries: (state, action) => {
40
- state.entries = action.payload;
41
- // 清理掉不在新 entries 中的 loadedScripts(重启后 entries 可能变化)
42
- state.loadedScripts = state.loadedScripts.filter(s => action.payload.includes(s));
43
- state.synced = true;
44
- },
45
- addEntry: (state, action) => {
46
- if (!state.entries.includes(action.payload)) {
47
- state.entries.push(action.payload);
48
- }
49
- },
50
- removeEntry: (state, action) => {
51
- state.entries = state.entries.filter(e => e !== action.payload);
52
- state.loadedScripts = state.loadedScripts.filter(s => s !== action.payload);
53
- }
54
- },
55
- extraReducers: (builder) => {
56
- // loadScript 成功
57
- builder.addCase(loadScript.fulfilled, (state, action) => {
58
- if (!state.loadedScripts.includes(action.payload)) {
59
- state.loadedScripts.push(action.payload);
60
- }
61
- });
62
- // loadScripts 成功
63
- builder.addCase(loadScripts.fulfilled, (state, action) => {
64
- action.payload.forEach(src => {
65
- if (!state.loadedScripts.includes(src)) {
66
- state.loadedScripts.push(src);
67
- }
68
- });
69
- });
70
- // unloadScript 成功
71
- builder.addCase(unloadScript.fulfilled, (state, action) => {
72
- state.loadedScripts = state.loadedScripts.filter(s => s !== action.payload);
73
- });
74
- }
75
- });
76
- export const { syncEntries, addEntry, removeEntry } = scriptSlice.actions;
77
- export default scriptSlice.reducer;
78
- //# sourceMappingURL=script.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"script.js","sourceRoot":"","sources":["../../../client/store/reducers/script.ts"],"names":[],"mappings":"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"}
@@ -1,8 +0,0 @@
1
- export interface UIState {
2
- sidebarOpen: boolean;
3
- activeMenu: string;
4
- }
5
- export declare const toggleSidebar: import("@reduxjs/toolkit").ActionCreatorWithoutPayload<"ui/toggleSidebar">, setSidebarOpen: import("@reduxjs/toolkit").ActionCreatorWithPayload<boolean, "ui/setSidebarOpen">, setActiveMenu: import("@reduxjs/toolkit").ActionCreatorWithPayload<string, "ui/setActiveMenu">;
6
- declare const _default: import("@reduxjs/toolkit").Reducer<UIState>;
7
- export default _default;
8
- //# sourceMappingURL=ui.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ui.d.ts","sourceRoot":"","sources":["../../../client/store/reducers/ui.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,OAAO;IACpB,WAAW,EAAE,OAAO,CAAA;IACpB,UAAU,EAAE,MAAM,CAAA;CACrB;AAuBD,eAAO,MAAQ,aAAa,8EAAE,cAAc,qFAAE,aAAa,iFAAoB,CAAA;;AAC/E,wBAA8B"}
@@ -1,23 +0,0 @@
1
- import { createSlice } from "@reduxjs/toolkit";
2
- const initialState = {
3
- sidebarOpen: true,
4
- activeMenu: 'home'
5
- };
6
- const uiSlice = createSlice({
7
- name: 'ui',
8
- initialState,
9
- reducers: {
10
- toggleSidebar: (state) => {
11
- state.sidebarOpen = !state.sidebarOpen;
12
- },
13
- setSidebarOpen: (state, action) => {
14
- state.sidebarOpen = action.payload;
15
- },
16
- setActiveMenu: (state, action) => {
17
- state.activeMenu = action.payload;
18
- }
19
- }
20
- });
21
- export const { toggleSidebar, setSidebarOpen, setActiveMenu } = uiSlice.actions;
22
- export default uiSlice.reducer;
23
- //# sourceMappingURL=ui.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ui.js","sourceRoot":"","sources":["../../../client/store/reducers/ui.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAiB,MAAM,kBAAkB,CAAA;AAO7D,MAAM,YAAY,GAAY;IAC1B,WAAW,EAAE,IAAI;IACjB,UAAU,EAAE,MAAM;CACrB,CAAA;AAED,MAAM,OAAO,GAAG,WAAW,CAAC;IACxB,IAAI,EAAE,IAAI;IACV,YAAY;IACZ,QAAQ,EAAE;QACN,aAAa,EAAE,CAAC,KAAK,EAAE,EAAE;YACrB,KAAK,CAAC,WAAW,GAAG,CAAC,KAAK,CAAC,WAAW,CAAA;QAC1C,CAAC;QACD,cAAc,EAAE,CAAC,KAAK,EAAE,MAA8B,EAAE,EAAE;YACtD,KAAK,CAAC,WAAW,GAAG,MAAM,CAAC,OAAO,CAAA;QACtC,CAAC;QACD,aAAa,EAAE,CAAC,KAAK,EAAE,MAA6B,EAAE,EAAE;YACpD,KAAK,CAAC,UAAU,GAAG,MAAM,CAAC,OAAO,CAAA;QACrC,CAAC;KACJ;CACJ,CAAC,CAAA;AAEF,MAAM,CAAC,MAAM,EAAE,aAAa,EAAE,cAAc,EAAE,aAAa,EAAE,GAAG,OAAO,CAAC,OAAO,CAAA;AAC/E,eAAe,OAAO,CAAC,OAAO,CAAA"}
@@ -1,58 +0,0 @@
1
- /**
2
- * WebSocket 消息处理器
3
- * 负责处理不同类型的 WebSocket 消息并分发到对应的处理逻辑
4
- */
5
- import type { WebSocketMessage } from './types';
6
- export declare class MessageHandler {
7
- /**
8
- * 处理 WebSocket 消息
9
- */
10
- static handle(message: WebSocketMessage): void;
11
- /**
12
- * 处理脚本同步消息
13
- */
14
- private static handleScriptSync;
15
- /**
16
- * 处理脚本添加消息
17
- */
18
- private static handleScriptAdd;
19
- /**
20
- * 处理脚本删除消息
21
- */
22
- private static handleScriptDelete;
23
- /**
24
- * 处理配置更新消息
25
- */
26
- private static handleConfigUpdated;
27
- /**
28
- * 处理批量配置消息
29
- */
30
- private static handleConfigBatch;
31
- /**
32
- * 处理配置错误消息
33
- */
34
- private static handleConfigError;
35
- /**
36
- * 处理 Schema 更新消息
37
- */
38
- private static handleSchemaUpdated;
39
- /**
40
- * 处理批量 Schema 消息
41
- */
42
- private static handleSchemaBatch;
43
- /**
44
- * 处理轻量 HMR 刷新通知
45
- * 服务端监听到入口目录文件变更后发送此消息,客户端直接刷新页面
46
- */
47
- private static handleHmrReload;
48
- /**
49
- * 处理系统重启通知
50
- * 服务端即将重启,延迟后刷新页面以重新连接
51
- */
52
- private static handleSystemRestart;
53
- /**
54
- * 处理系统消息
55
- */
56
- private static handleSystemMessage;
57
- }
58
- //# sourceMappingURL=messageHandler.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"messageHandler.d.ts","sourceRoot":"","sources":["../../client/websocket/messageHandler.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAgBH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAA;AAE/C,qBAAa,cAAc;IACzB;;OAEG;IACH,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,gBAAgB,GAAG,IAAI;IAkE9C;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,gBAAgB;IAW/B;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,eAAe;IAO9B;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,kBAAkB;IAOjC;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,mBAAmB;IASlC;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,iBAAiB;IAMhC;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,iBAAiB;IAShC;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,mBAAmB;IASlC;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,iBAAiB;IAMhC;;;OAGG;IACH,OAAO,CAAC,MAAM,CAAC,eAAe;IAM9B;;;OAGG;IACH,OAAO,CAAC,MAAM,CAAC,mBAAmB;IAOlC;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,mBAAmB;CAInC"}