electron-infra-kit 0.0.2
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/LICENSE +21 -0
- package/README.md +302 -0
- package/README.zh-CN.md +308 -0
- package/dist/core/error/WindowError.d.ts +56 -0
- package/dist/core/error/WindowError.js +71 -0
- package/dist/core/error/WindowError.js.map +1 -0
- package/dist/core/error/WindowError.mjs +71 -0
- package/dist/core/error/WindowError.mjs.map +1 -0
- package/dist/core/ipc/IpcHandler.d.ts +48 -0
- package/dist/core/ipc/IpcHandler.js +59 -0
- package/dist/core/ipc/IpcHandler.js.map +1 -0
- package/dist/core/ipc/IpcHandler.mjs +59 -0
- package/dist/core/ipc/IpcHandler.mjs.map +1 -0
- package/dist/core/ipc/IpcRouter.d.ts +70 -0
- package/dist/core/ipc/IpcRouter.js +143 -0
- package/dist/core/ipc/IpcRouter.js.map +1 -0
- package/dist/core/ipc/IpcRouter.mjs +143 -0
- package/dist/core/ipc/IpcRouter.mjs.map +1 -0
- package/dist/core/ipc/index.d.ts +3 -0
- package/dist/core/ipc/index.js +1 -0
- package/dist/core/ipc/index.js.map +1 -0
- package/dist/core/ipc/index.mjs +1 -0
- package/dist/core/ipc/index.mjs.map +1 -0
- package/dist/core/ipc/ipc-router.type.d.ts +73 -0
- package/dist/core/ipc/transport/index.d.ts +65 -0
- package/dist/core/ipc/transport/index.js +229 -0
- package/dist/core/ipc/transport/index.js.map +1 -0
- package/dist/core/ipc/transport/index.mjs +229 -0
- package/dist/core/ipc/transport/index.mjs.map +1 -0
- package/dist/core/ipc/transport/ipc.type.d.ts +36 -0
- package/dist/core/lifecycle/LifecycleManager.d.ts +66 -0
- package/dist/core/lifecycle/LifecycleManager.js +140 -0
- package/dist/core/lifecycle/LifecycleManager.js.map +1 -0
- package/dist/core/lifecycle/LifecycleManager.mjs +140 -0
- package/dist/core/lifecycle/LifecycleManager.mjs.map +1 -0
- package/dist/core/message-bus/MessageBus.d.ts +282 -0
- package/dist/core/message-bus/MessageBus.js +677 -0
- package/dist/core/message-bus/MessageBus.js.map +1 -0
- package/dist/core/message-bus/MessageBus.mjs +677 -0
- package/dist/core/message-bus/MessageBus.mjs.map +1 -0
- package/dist/core/message-bus/MessageBusClient.d.ts +100 -0
- package/dist/core/message-bus/MessageBusClient.js +280 -0
- package/dist/core/message-bus/MessageBusClient.js.map +1 -0
- package/dist/core/message-bus/MessageBusClient.mjs +280 -0
- package/dist/core/message-bus/MessageBusClient.mjs.map +1 -0
- package/dist/core/message-bus/core/DataStoreManager.d.ts +51 -0
- package/dist/core/message-bus/core/DataStoreManager.js +94 -0
- package/dist/core/message-bus/core/DataStoreManager.js.map +1 -0
- package/dist/core/message-bus/core/DataStoreManager.mjs +94 -0
- package/dist/core/message-bus/core/DataStoreManager.mjs.map +1 -0
- package/dist/core/message-bus/core/ManagedPort.d.ts +26 -0
- package/dist/core/message-bus/core/ManagedPort.js +55 -0
- package/dist/core/message-bus/core/ManagedPort.js.map +1 -0
- package/dist/core/message-bus/core/ManagedPort.mjs +55 -0
- package/dist/core/message-bus/core/ManagedPort.mjs.map +1 -0
- package/dist/core/message-bus/core/PortManager.d.ts +47 -0
- package/dist/core/message-bus/core/PortManager.js +114 -0
- package/dist/core/message-bus/core/PortManager.js.map +1 -0
- package/dist/core/message-bus/core/PortManager.mjs +114 -0
- package/dist/core/message-bus/core/PortManager.mjs.map +1 -0
- package/dist/core/message-bus/core/SubscriptionManager.d.ts +36 -0
- package/dist/core/message-bus/core/SubscriptionManager.js +78 -0
- package/dist/core/message-bus/core/SubscriptionManager.js.map +1 -0
- package/dist/core/message-bus/core/SubscriptionManager.mjs +78 -0
- package/dist/core/message-bus/core/SubscriptionManager.mjs.map +1 -0
- package/dist/core/message-bus/core/TransactionManager.d.ts +54 -0
- package/dist/core/message-bus/core/TransactionManager.js +95 -0
- package/dist/core/message-bus/core/TransactionManager.js.map +1 -0
- package/dist/core/message-bus/core/TransactionManager.mjs +95 -0
- package/dist/core/message-bus/core/TransactionManager.mjs.map +1 -0
- package/dist/core/message-bus/core/index.d.ts +5 -0
- package/dist/core/message-bus/index.d.ts +4 -0
- package/dist/core/message-bus/index.js +1 -0
- package/dist/core/message-bus/index.js.map +1 -0
- package/dist/core/message-bus/index.mjs +1 -0
- package/dist/core/message-bus/index.mjs.map +1 -0
- package/dist/core/message-bus/message-bus.type.d.ts +143 -0
- package/dist/core/message-bus/message-bus.type.js +26 -0
- package/dist/core/message-bus/message-bus.type.js.map +1 -0
- package/dist/core/message-bus/message-bus.type.mjs +26 -0
- package/dist/core/message-bus/message-bus.type.mjs.map +1 -0
- package/dist/core/message-bus/preload.d.ts +16 -0
- package/dist/core/message-bus/preload.js +27 -0
- package/dist/core/message-bus/preload.js.map +1 -0
- package/dist/core/message-bus/preload.mjs +27 -0
- package/dist/core/message-bus/preload.mjs.map +1 -0
- package/dist/core/message-bus/transport/ITransport.d.ts +40 -0
- package/dist/core/message-bus/transport/IpcTransport.d.ts +18 -0
- package/dist/core/message-bus/transport/IpcTransport.js +60 -0
- package/dist/core/message-bus/transport/IpcTransport.js.map +1 -0
- package/dist/core/message-bus/transport/IpcTransport.mjs +60 -0
- package/dist/core/message-bus/transport/IpcTransport.mjs.map +1 -0
- package/dist/core/message-bus/transport/MessagePortTransport.d.ts +15 -0
- package/dist/core/message-bus/transport/MessagePortTransport.js +35 -0
- package/dist/core/message-bus/transport/MessagePortTransport.js.map +1 -0
- package/dist/core/message-bus/transport/MessagePortTransport.mjs +35 -0
- package/dist/core/message-bus/transport/MessagePortTransport.mjs.map +1 -0
- package/dist/core/message-bus/transport/index.d.ts +3 -0
- package/dist/core/window/IpcSetup.d.ts +50 -0
- package/dist/core/window/IpcSetup.js +96 -0
- package/dist/core/window/IpcSetup.js.map +1 -0
- package/dist/core/window/IpcSetup.mjs +96 -0
- package/dist/core/window/IpcSetup.mjs.map +1 -0
- package/dist/core/window/WindowCreator.d.ts +66 -0
- package/dist/core/window/WindowCreator.js +168 -0
- package/dist/core/window/WindowCreator.js.map +1 -0
- package/dist/core/window/WindowCreator.mjs +168 -0
- package/dist/core/window/WindowCreator.mjs.map +1 -0
- package/dist/core/window/WindowManager.d.ts +214 -0
- package/dist/core/window/WindowManager.js +583 -0
- package/dist/core/window/WindowManager.js.map +1 -0
- package/dist/core/window/WindowManager.mjs +583 -0
- package/dist/core/window/WindowManager.mjs.map +1 -0
- package/dist/core/window/WindowStore.d.ts +136 -0
- package/dist/core/window/WindowStore.js +436 -0
- package/dist/core/window/WindowStore.js.map +1 -0
- package/dist/core/window/WindowStore.mjs +436 -0
- package/dist/core/window/WindowStore.mjs.map +1 -0
- package/dist/core/window/constants.d.ts +17 -0
- package/dist/core/window/constants.js +15 -0
- package/dist/core/window/constants.js.map +1 -0
- package/dist/core/window/constants.mjs +15 -0
- package/dist/core/window/constants.mjs.map +1 -0
- package/dist/core/window/core/MetricsManager.d.ts +14 -0
- package/dist/core/window/core/MetricsManager.js +27 -0
- package/dist/core/window/core/MetricsManager.js.map +1 -0
- package/dist/core/window/core/MetricsManager.mjs +27 -0
- package/dist/core/window/core/MetricsManager.mjs.map +1 -0
- package/dist/core/window/core/PluginExecutor.d.ts +22 -0
- package/dist/core/window/core/PluginExecutor.js +110 -0
- package/dist/core/window/core/PluginExecutor.js.map +1 -0
- package/dist/core/window/core/PluginExecutor.mjs +110 -0
- package/dist/core/window/core/PluginExecutor.mjs.map +1 -0
- package/dist/core/window/core/WindowContextManager.d.ts +26 -0
- package/dist/core/window/core/WindowContextManager.js +59 -0
- package/dist/core/window/core/WindowContextManager.js.map +1 -0
- package/dist/core/window/core/WindowContextManager.mjs +59 -0
- package/dist/core/window/core/WindowContextManager.mjs.map +1 -0
- package/dist/core/window/core/WindowLifecycle.d.ts +15 -0
- package/dist/core/window/core/WindowLifecycle.js +150 -0
- package/dist/core/window/core/WindowLifecycle.js.map +1 -0
- package/dist/core/window/core/WindowLifecycle.mjs +150 -0
- package/dist/core/window/core/WindowLifecycle.mjs.map +1 -0
- package/dist/core/window/core/WindowOperator.d.ts +90 -0
- package/dist/core/window/core/WindowOperator.js +154 -0
- package/dist/core/window/core/WindowOperator.js.map +1 -0
- package/dist/core/window/core/WindowOperator.mjs +154 -0
- package/dist/core/window/core/WindowOperator.mjs.map +1 -0
- package/dist/core/window/core/WindowRegistry.d.ts +168 -0
- package/dist/core/window/core/WindowRegistry.js +331 -0
- package/dist/core/window/core/WindowRegistry.js.map +1 -0
- package/dist/core/window/core/WindowRegistry.mjs +331 -0
- package/dist/core/window/core/WindowRegistry.mjs.map +1 -0
- package/dist/core/window/core/WindowStateManager.d.ts +40 -0
- package/dist/core/window/core/WindowStateManager.js +110 -0
- package/dist/core/window/core/WindowStateManager.js.map +1 -0
- package/dist/core/window/core/WindowStateManager.mjs +110 -0
- package/dist/core/window/core/WindowStateManager.mjs.map +1 -0
- package/dist/core/window/index.d.ts +7 -0
- package/dist/core/window/index.js +1 -0
- package/dist/core/window/index.js.map +1 -0
- package/dist/core/window/index.mjs +1 -0
- package/dist/core/window/index.mjs.map +1 -0
- package/dist/core/window/window-manager.schema.d.ts +50 -0
- package/dist/core/window/window-manager.schema.js +87 -0
- package/dist/core/window/window-manager.schema.js.map +1 -0
- package/dist/core/window/window-manager.schema.mjs +87 -0
- package/dist/core/window/window-manager.schema.mjs.map +1 -0
- package/dist/core/window/window-manager.type.d.ts +365 -0
- package/dist/index.d.ts +25 -0
- package/dist/index.js +33 -0
- package/dist/index.js.map +1 -0
- package/dist/index.mjs +33 -0
- package/dist/index.mjs.map +1 -0
- package/dist/index.umd.js +1 -0
- package/dist/infrastructure/config/ConfigManager.d.ts +133 -0
- package/dist/infrastructure/config/ConfigManager.js +218 -0
- package/dist/infrastructure/config/ConfigManager.js.map +1 -0
- package/dist/infrastructure/config/ConfigManager.mjs +218 -0
- package/dist/infrastructure/config/ConfigManager.mjs.map +1 -0
- package/dist/infrastructure/config/index.d.ts +1 -0
- package/dist/infrastructure/debug/EnhancedDebugHelper.d.ts +106 -0
- package/dist/infrastructure/debug/EnhancedDebugHelper.js +218 -0
- package/dist/infrastructure/debug/EnhancedDebugHelper.js.map +1 -0
- package/dist/infrastructure/debug/EnhancedDebugHelper.mjs +218 -0
- package/dist/infrastructure/debug/EnhancedDebugHelper.mjs.map +1 -0
- package/dist/infrastructure/debug/PerformanceMonitor.d.ts +45 -0
- package/dist/infrastructure/debug/PerformanceMonitor.js +67 -0
- package/dist/infrastructure/debug/PerformanceMonitor.js.map +1 -0
- package/dist/infrastructure/debug/PerformanceMonitor.mjs +67 -0
- package/dist/infrastructure/debug/PerformanceMonitor.mjs.map +1 -0
- package/dist/infrastructure/debug/index.d.ts +22 -0
- package/dist/infrastructure/debug/index.js +47 -0
- package/dist/infrastructure/debug/index.js.map +1 -0
- package/dist/infrastructure/debug/index.mjs +47 -0
- package/dist/infrastructure/debug/index.mjs.map +1 -0
- package/dist/infrastructure/errors/ErrorCodes.d.ts +74 -0
- package/dist/infrastructure/errors/ErrorCodes.js +78 -0
- package/dist/infrastructure/errors/ErrorCodes.js.map +1 -0
- package/dist/infrastructure/errors/ErrorCodes.mjs +78 -0
- package/dist/infrastructure/errors/ErrorCodes.mjs.map +1 -0
- package/dist/infrastructure/errors/StandardError.d.ts +61 -0
- package/dist/infrastructure/errors/StandardError.js +84 -0
- package/dist/infrastructure/errors/StandardError.js.map +1 -0
- package/dist/infrastructure/errors/StandardError.mjs +84 -0
- package/dist/infrastructure/errors/StandardError.mjs.map +1 -0
- package/dist/infrastructure/errors/index.d.ts +13 -0
- package/dist/infrastructure/errors/index.js +24 -0
- package/dist/infrastructure/errors/index.js.map +1 -0
- package/dist/infrastructure/errors/index.mjs +24 -0
- package/dist/infrastructure/errors/index.mjs.map +1 -0
- package/dist/infrastructure/logger/ElectronLogger.d.ts +39 -0
- package/dist/infrastructure/logger/ElectronLogger.js +65 -0
- package/dist/infrastructure/logger/ElectronLogger.js.map +1 -0
- package/dist/infrastructure/logger/ElectronLogger.mjs +65 -0
- package/dist/infrastructure/logger/ElectronLogger.mjs.map +1 -0
- package/dist/infrastructure/logger/index.d.ts +2 -0
- package/dist/infrastructure/logger/logger.type.d.ts +8 -0
- package/dist/internal/types/BrandedTypes.d.ts +64 -0
- package/dist/internal/types/BrandedTypes.js +54 -0
- package/dist/internal/types/BrandedTypes.js.map +1 -0
- package/dist/internal/types/BrandedTypes.mjs +54 -0
- package/dist/internal/types/BrandedTypes.mjs.map +1 -0
- package/dist/internal/types/PerformanceOptions.d.ts +87 -0
- package/dist/internal/types/branded.d.ts +42 -0
- package/dist/internal/utils/MessageDispatcher.d.ts +67 -0
- package/dist/internal/utils/MessageDispatcher.js +96 -0
- package/dist/internal/utils/MessageDispatcher.js.map +1 -0
- package/dist/internal/utils/MessageDispatcher.mjs +96 -0
- package/dist/internal/utils/MessageDispatcher.mjs.map +1 -0
- package/dist/internal/utils/RateLimiter.d.ts +41 -0
- package/dist/internal/utils/RateLimiter.js +83 -0
- package/dist/internal/utils/RateLimiter.js.map +1 -0
- package/dist/internal/utils/RateLimiter.mjs +83 -0
- package/dist/internal/utils/RateLimiter.mjs.map +1 -0
- package/dist/internal/utils/StateKeeper.d.ts +125 -0
- package/dist/internal/utils/StateKeeper.js +334 -0
- package/dist/internal/utils/StateKeeper.js.map +1 -0
- package/dist/internal/utils/StateKeeper.mjs +334 -0
- package/dist/internal/utils/StateKeeper.mjs.map +1 -0
- package/dist/internal/utils/branded-helpers.d.ts +33 -0
- package/dist/internal/utils/index.d.ts +5 -0
- package/dist/preload/index.d.ts +45 -0
- package/dist/preload/index.js +91 -0
- package/dist/preload/index.js.map +1 -0
- package/dist/preload/index.mjs +91 -0
- package/dist/preload/index.mjs.map +1 -0
- package/dist/preload/preload.type.d.ts +15 -0
- package/dist/types.d.ts +7 -0
- package/dist/types.js +1 -0
- package/dist/types.js.map +1 -0
- package/dist/types.mjs +1 -0
- package/dist/types.mjs.map +1 -0
- package/package.json +143 -0
|
@@ -0,0 +1,218 @@
|
|
|
1
|
+
import {ElectronLogger}from'../logger/ElectronLogger.mjs';/**
|
|
2
|
+
* Debug Helper - Enhanced debugging tools for development
|
|
3
|
+
* 调试助手 - 增强的开发调试工具
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* Enhanced Debug Helper
|
|
7
|
+
* 增强的调试助手
|
|
8
|
+
*/
|
|
9
|
+
class EnhancedDebugHelper {
|
|
10
|
+
static instance;
|
|
11
|
+
logger;
|
|
12
|
+
registry = new Map();
|
|
13
|
+
performanceMetrics = [];
|
|
14
|
+
metricsEnabled = false;
|
|
15
|
+
constructor() {
|
|
16
|
+
this.logger = new ElectronLogger({ appName: 'DebugHelper' });
|
|
17
|
+
}
|
|
18
|
+
static getInstance() {
|
|
19
|
+
if (!EnhancedDebugHelper.instance) {
|
|
20
|
+
EnhancedDebugHelper.instance = new EnhancedDebugHelper();
|
|
21
|
+
}
|
|
22
|
+
return EnhancedDebugHelper.instance;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Register a component for debugging
|
|
26
|
+
* 注册组件用于调试
|
|
27
|
+
*/
|
|
28
|
+
register(name, component) {
|
|
29
|
+
this.registry.set(name, component);
|
|
30
|
+
this.logger.info(`Registered component: ${name}`);
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Get registered component
|
|
34
|
+
* 获取已注册的组件
|
|
35
|
+
*/
|
|
36
|
+
get(name) {
|
|
37
|
+
return this.registry.get(name);
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Get all registered components
|
|
41
|
+
* 获取所有已注册的组件
|
|
42
|
+
*/
|
|
43
|
+
getAll() {
|
|
44
|
+
const result = {};
|
|
45
|
+
this.registry.forEach((value, key) => {
|
|
46
|
+
result[key] = value;
|
|
47
|
+
});
|
|
48
|
+
return result;
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Enable performance monitoring
|
|
52
|
+
* 启用性能监控
|
|
53
|
+
*/
|
|
54
|
+
enablePerformanceMonitoring() {
|
|
55
|
+
this.metricsEnabled = true;
|
|
56
|
+
this.logger.info('Performance monitoring enabled');
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Disable performance monitoring
|
|
60
|
+
* 禁用性能监控
|
|
61
|
+
*/
|
|
62
|
+
disablePerformanceMonitoring() {
|
|
63
|
+
this.metricsEnabled = false;
|
|
64
|
+
this.logger.info('Performance monitoring disabled');
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Record a performance metric
|
|
68
|
+
* 记录性能指标
|
|
69
|
+
*/
|
|
70
|
+
recordMetric(metric) {
|
|
71
|
+
if (!this.metricsEnabled)
|
|
72
|
+
return;
|
|
73
|
+
this.performanceMetrics.push(metric);
|
|
74
|
+
// Keep only last 1000 metrics
|
|
75
|
+
if (this.performanceMetrics.length > 1000) {
|
|
76
|
+
this.performanceMetrics.shift();
|
|
77
|
+
}
|
|
78
|
+
this.logger.info(`Performance: ${metric.name} took ${metric.duration.toFixed(2)}ms`, metric.metadata);
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* Get performance metrics
|
|
82
|
+
* 获取性能指标
|
|
83
|
+
*/
|
|
84
|
+
getMetrics() {
|
|
85
|
+
return [...this.performanceMetrics];
|
|
86
|
+
}
|
|
87
|
+
/**
|
|
88
|
+
* Clear performance metrics
|
|
89
|
+
* 清除性能指标
|
|
90
|
+
*/
|
|
91
|
+
clearMetrics() {
|
|
92
|
+
this.performanceMetrics = [];
|
|
93
|
+
this.logger.info('Performance metrics cleared');
|
|
94
|
+
}
|
|
95
|
+
/**
|
|
96
|
+
* Get performance statistics
|
|
97
|
+
* 获取性能统计
|
|
98
|
+
*/
|
|
99
|
+
getStatistics() {
|
|
100
|
+
const stats = {};
|
|
101
|
+
this.performanceMetrics.forEach((metric) => {
|
|
102
|
+
if (!stats[metric.name]) {
|
|
103
|
+
stats[metric.name] = {
|
|
104
|
+
count: 0,
|
|
105
|
+
total: 0,
|
|
106
|
+
min: Infinity,
|
|
107
|
+
max: -Infinity,
|
|
108
|
+
avg: 0,
|
|
109
|
+
};
|
|
110
|
+
}
|
|
111
|
+
const stat = stats[metric.name];
|
|
112
|
+
stat.count++;
|
|
113
|
+
stat.total += metric.duration;
|
|
114
|
+
stat.min = Math.min(stat.min, metric.duration);
|
|
115
|
+
stat.max = Math.max(stat.max, metric.duration);
|
|
116
|
+
stat.avg = stat.total / stat.count;
|
|
117
|
+
});
|
|
118
|
+
return stats;
|
|
119
|
+
}
|
|
120
|
+
/**
|
|
121
|
+
* Create a performance timer
|
|
122
|
+
* 创建性能计时器
|
|
123
|
+
*/
|
|
124
|
+
createTimer(name, metadata) {
|
|
125
|
+
const start = performance.now();
|
|
126
|
+
return () => {
|
|
127
|
+
const duration = performance.now() - start;
|
|
128
|
+
this.recordMetric({
|
|
129
|
+
name,
|
|
130
|
+
duration,
|
|
131
|
+
timestamp: Date.now(),
|
|
132
|
+
metadata,
|
|
133
|
+
});
|
|
134
|
+
};
|
|
135
|
+
}
|
|
136
|
+
/**
|
|
137
|
+
* Get debug information about WindowManager
|
|
138
|
+
* 获取 WindowManager 的调试信息
|
|
139
|
+
*/
|
|
140
|
+
getWindowManagerInfo() {
|
|
141
|
+
const wm = this.registry.get('windowManager');
|
|
142
|
+
if (!wm)
|
|
143
|
+
return null;
|
|
144
|
+
try {
|
|
145
|
+
const windows = wm.getAllWindows();
|
|
146
|
+
return {
|
|
147
|
+
windowCount: windows.length,
|
|
148
|
+
windows: windows.map((window) => ({
|
|
149
|
+
isDestroyed: window.isDestroyed(),
|
|
150
|
+
isVisible: window.isVisible(),
|
|
151
|
+
isMinimized: window.isMinimized(),
|
|
152
|
+
isMaximized: window.isMaximized(),
|
|
153
|
+
title: window.getTitle(),
|
|
154
|
+
})),
|
|
155
|
+
};
|
|
156
|
+
}
|
|
157
|
+
catch (error) {
|
|
158
|
+
this.logger.error('Failed to get WindowManager info:', error);
|
|
159
|
+
return { error: 'Failed to retrieve info' };
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
/**
|
|
163
|
+
* Get debug information about IpcRouter
|
|
164
|
+
* 获取 IpcRouter 的调试信息
|
|
165
|
+
*/
|
|
166
|
+
getIpcRouterInfo() {
|
|
167
|
+
const router = this.registry.get('ipcRouter');
|
|
168
|
+
if (!router)
|
|
169
|
+
return null;
|
|
170
|
+
// IpcRouter doesn't expose handler names by default, so we return basic info
|
|
171
|
+
return {
|
|
172
|
+
registered: true,
|
|
173
|
+
type: 'IpcRouter',
|
|
174
|
+
};
|
|
175
|
+
}
|
|
176
|
+
/**
|
|
177
|
+
* Get debug information about MessageBus
|
|
178
|
+
* 获取 MessageBus 的调试信息
|
|
179
|
+
*/
|
|
180
|
+
getMessageBusInfo() {
|
|
181
|
+
const bus = this.registry.get('messageBus');
|
|
182
|
+
if (!bus)
|
|
183
|
+
return null;
|
|
184
|
+
return {
|
|
185
|
+
registeredWindows: bus.getRegisteredWindows(),
|
|
186
|
+
data: bus.getData(),
|
|
187
|
+
};
|
|
188
|
+
}
|
|
189
|
+
/**
|
|
190
|
+
* Get comprehensive debug snapshot
|
|
191
|
+
* 获取综合调试快照
|
|
192
|
+
*/
|
|
193
|
+
getDebugSnapshot() {
|
|
194
|
+
return {
|
|
195
|
+
timestamp: Date.now(),
|
|
196
|
+
components: {
|
|
197
|
+
windowManager: this.getWindowManagerInfo(),
|
|
198
|
+
ipcRouter: this.getIpcRouterInfo(),
|
|
199
|
+
messageBus: this.getMessageBusInfo(),
|
|
200
|
+
},
|
|
201
|
+
performance: {
|
|
202
|
+
metrics: this.getMetrics(),
|
|
203
|
+
statistics: this.getStatistics(),
|
|
204
|
+
},
|
|
205
|
+
};
|
|
206
|
+
}
|
|
207
|
+
/**
|
|
208
|
+
* Log debug snapshot to console
|
|
209
|
+
* 将调试快照输出到控制台
|
|
210
|
+
*/
|
|
211
|
+
logSnapshot() {
|
|
212
|
+
const snapshot = this.getDebugSnapshot();
|
|
213
|
+
console.log('=== Debug Snapshot ===');
|
|
214
|
+
console.log(JSON.stringify(snapshot, null, 2));
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
// Export singleton instance
|
|
218
|
+
const debugHelper = EnhancedDebugHelper.getInstance();export{EnhancedDebugHelper,debugHelper};//# sourceMappingURL=EnhancedDebugHelper.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"EnhancedDebugHelper.mjs","sources":["../../../src/infrastructure/debug/EnhancedDebugHelper.ts"],"sourcesContent":["/**\n * Debug Helper - Enhanced debugging tools for development\n * 调试助手 - 增强的开发调试工具\n */\n\nimport { ILogger, Logger } from '@/infrastructure/logger';\nimport type WindowManager from '@/core/window/WindowManager';\nimport type IpcRouter from '@/core/ipc/IpcRouter';\nimport type { MessageBus } from '@/core/message-bus/MessageBus';\nimport { PerformanceMetric } from '@/internal/types/PerformanceOptions';\n\n/**\n * Debug Panel Configuration\n * 调试面板配置\n */\nexport interface DebugPanelConfig {\n /** Enable debug panel */\n enabled?: boolean;\n /** Port for debug server */\n port?: number;\n /** Auto-open in browser */\n autoOpen?: boolean;\n}\n\n/**\n * Enhanced Debug Helper\n * 增强的调试助手\n */\nexport class EnhancedDebugHelper {\n private static instance: EnhancedDebugHelper;\n private logger: ILogger;\n private registry: Map<string, any> = new Map();\n private performanceMetrics: PerformanceMetric[] = [];\n private metricsEnabled: boolean = false;\n\n private constructor() {\n this.logger = new Logger({ appName: 'DebugHelper' });\n }\n\n static getInstance(): EnhancedDebugHelper {\n if (!EnhancedDebugHelper.instance) {\n EnhancedDebugHelper.instance = new EnhancedDebugHelper();\n }\n return EnhancedDebugHelper.instance;\n }\n\n /**\n * Register a component for debugging\n * 注册组件用于调试\n */\n register(name: string, component: any): void {\n this.registry.set(name, component);\n this.logger.info(`Registered component: ${name}`);\n }\n\n /**\n * Get registered component\n * 获取已注册的组件\n */\n get(name: string): any {\n return this.registry.get(name);\n }\n\n /**\n * Get all registered components\n * 获取所有已注册的组件\n */\n getAll(): Record<string, any> {\n const result: Record<string, any> = {};\n this.registry.forEach((value, key) => {\n result[key] = value;\n });\n return result;\n }\n\n /**\n * Enable performance monitoring\n * 启用性能监控\n */\n enablePerformanceMonitoring(): void {\n this.metricsEnabled = true;\n this.logger.info('Performance monitoring enabled');\n }\n\n /**\n * Disable performance monitoring\n * 禁用性能监控\n */\n disablePerformanceMonitoring(): void {\n this.metricsEnabled = false;\n this.logger.info('Performance monitoring disabled');\n }\n\n /**\n * Record a performance metric\n * 记录性能指标\n */\n recordMetric(metric: PerformanceMetric): void {\n if (!this.metricsEnabled) return;\n\n this.performanceMetrics.push(metric);\n\n // Keep only last 1000 metrics\n if (this.performanceMetrics.length > 1000) {\n this.performanceMetrics.shift();\n }\n\n this.logger.info(\n `Performance: ${metric.name} took ${metric.duration.toFixed(2)}ms`,\n metric.metadata\n );\n }\n\n /**\n * Get performance metrics\n * 获取性能指标\n */\n getMetrics(): PerformanceMetric[] {\n return [...this.performanceMetrics];\n }\n\n /**\n * Clear performance metrics\n * 清除性能指标\n */\n clearMetrics(): void {\n this.performanceMetrics = [];\n this.logger.info('Performance metrics cleared');\n }\n\n /**\n * Get performance statistics\n * 获取性能统计\n */\n getStatistics(): Record<string, any> {\n const stats: Record<string, any> = {};\n\n this.performanceMetrics.forEach((metric) => {\n if (!stats[metric.name]) {\n stats[metric.name] = {\n count: 0,\n total: 0,\n min: Infinity,\n max: -Infinity,\n avg: 0,\n };\n }\n\n const stat = stats[metric.name];\n stat.count++;\n stat.total += metric.duration;\n stat.min = Math.min(stat.min, metric.duration);\n stat.max = Math.max(stat.max, metric.duration);\n stat.avg = stat.total / stat.count;\n });\n\n return stats;\n }\n\n /**\n * Create a performance timer\n * 创建性能计时器\n */\n createTimer(name: string, metadata?: Record<string, unknown>): () => void {\n const start = performance.now();\n\n return () => {\n const duration = performance.now() - start;\n this.recordMetric({\n name,\n duration,\n timestamp: Date.now(),\n metadata,\n });\n };\n }\n\n /**\n * Get debug information about WindowManager\n * 获取 WindowManager 的调试信息\n */\n getWindowManagerInfo(): any {\n const wm = this.registry.get('windowManager') as WindowManager | undefined;\n if (!wm) return null;\n\n try {\n const windows = wm.getAllWindows();\n return {\n windowCount: windows.length,\n windows: windows.map((window) => ({\n isDestroyed: window.isDestroyed(),\n isVisible: window.isVisible(),\n isMinimized: window.isMinimized(),\n isMaximized: window.isMaximized(),\n title: window.getTitle(),\n })),\n };\n } catch (error) {\n this.logger.error('Failed to get WindowManager info:', error);\n return { error: 'Failed to retrieve info' };\n }\n }\n\n /**\n * Get debug information about IpcRouter\n * 获取 IpcRouter 的调试信息\n */\n getIpcRouterInfo(): any {\n const router = this.registry.get('ipcRouter') as IpcRouter | undefined;\n if (!router) return null;\n\n // IpcRouter doesn't expose handler names by default, so we return basic info\n return {\n registered: true,\n type: 'IpcRouter',\n };\n }\n\n /**\n * Get debug information about MessageBus\n * 获取 MessageBus 的调试信息\n */\n getMessageBusInfo(): any {\n const bus = this.registry.get('messageBus') as MessageBus | undefined;\n if (!bus) return null;\n\n return {\n registeredWindows: bus.getRegisteredWindows(),\n data: bus.getData(),\n };\n }\n\n /**\n * Get comprehensive debug snapshot\n * 获取综合调试快照\n */\n getDebugSnapshot(): any {\n return {\n timestamp: Date.now(),\n components: {\n windowManager: this.getWindowManagerInfo(),\n ipcRouter: this.getIpcRouterInfo(),\n messageBus: this.getMessageBusInfo(),\n },\n performance: {\n metrics: this.getMetrics(),\n statistics: this.getStatistics(),\n },\n };\n }\n\n /**\n * Log debug snapshot to console\n * 将调试快照输出到控制台\n */\n logSnapshot(): void {\n const snapshot = this.getDebugSnapshot();\n console.log('=== Debug Snapshot ===');\n console.log(JSON.stringify(snapshot, null, 2));\n }\n}\n\n// Export singleton instance\nexport const debugHelper = EnhancedDebugHelper.getInstance();\n"],"names":["Logger"],"mappings":"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"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { ILogger } from '@/infrastructure/logger';
|
|
2
|
+
export interface PerformanceMetric {
|
|
3
|
+
name: string;
|
|
4
|
+
startTime: number;
|
|
5
|
+
endTime?: number;
|
|
6
|
+
duration?: number;
|
|
7
|
+
metadata?: any;
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* PerformanceMonitor
|
|
11
|
+
* 性能监控工具类
|
|
12
|
+
*
|
|
13
|
+
* Capabilities:
|
|
14
|
+
* - Measure duration of operations (startMeasure/endMeasure)
|
|
15
|
+
* - Record point-in-time metrics (recordMetric)
|
|
16
|
+
* - Track operation frequency
|
|
17
|
+
*/
|
|
18
|
+
export declare class PerformanceMonitor {
|
|
19
|
+
private static instance;
|
|
20
|
+
private metrics;
|
|
21
|
+
private logger;
|
|
22
|
+
private constructor();
|
|
23
|
+
static getInstance(logger?: ILogger): PerformanceMonitor;
|
|
24
|
+
/**
|
|
25
|
+
* Start measuring an operation
|
|
26
|
+
* 开始测量操作
|
|
27
|
+
* @param id Unique ID for this measurement (usually UUID or distinct name)
|
|
28
|
+
* @param name Human-readable name of the operation
|
|
29
|
+
* @param metadata Optional metadata
|
|
30
|
+
*/
|
|
31
|
+
startMeasure(id: string, name: string, metadata?: any): void;
|
|
32
|
+
/**
|
|
33
|
+
* End measuring an operation and log the result
|
|
34
|
+
* 结束测量操作并记录结果
|
|
35
|
+
* @param id Unique ID used in startMeasure
|
|
36
|
+
* @param additionalMetadata Optional metadata to merge
|
|
37
|
+
* @returns Duration in milliseconds
|
|
38
|
+
*/
|
|
39
|
+
endMeasure(id: string, additionalMetadata?: any): number | undefined;
|
|
40
|
+
/**
|
|
41
|
+
* Record a specific metric value
|
|
42
|
+
* 记录特定指标值
|
|
43
|
+
*/
|
|
44
|
+
recordMetric(name: string, value: number, metadata?: any): void;
|
|
45
|
+
}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
'use strict';var ElectronLogger=require('../logger/ElectronLogger.js');/**
|
|
2
|
+
* PerformanceMonitor
|
|
3
|
+
* 性能监控工具类
|
|
4
|
+
*
|
|
5
|
+
* Capabilities:
|
|
6
|
+
* - Measure duration of operations (startMeasure/endMeasure)
|
|
7
|
+
* - Record point-in-time metrics (recordMetric)
|
|
8
|
+
* - Track operation frequency
|
|
9
|
+
*/
|
|
10
|
+
class PerformanceMonitor {
|
|
11
|
+
static instance;
|
|
12
|
+
metrics = new Map();
|
|
13
|
+
logger;
|
|
14
|
+
constructor(logger) {
|
|
15
|
+
this.logger = logger || new ElectronLogger.ElectronLogger({ appName: 'PerformanceMonitor' });
|
|
16
|
+
}
|
|
17
|
+
static getInstance(logger) {
|
|
18
|
+
if (!PerformanceMonitor.instance) {
|
|
19
|
+
PerformanceMonitor.instance = new PerformanceMonitor(logger);
|
|
20
|
+
}
|
|
21
|
+
return PerformanceMonitor.instance;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Start measuring an operation
|
|
25
|
+
* 开始测量操作
|
|
26
|
+
* @param id Unique ID for this measurement (usually UUID or distinct name)
|
|
27
|
+
* @param name Human-readable name of the operation
|
|
28
|
+
* @param metadata Optional metadata
|
|
29
|
+
*/
|
|
30
|
+
startMeasure(id, name, metadata) {
|
|
31
|
+
this.metrics.set(id, {
|
|
32
|
+
name,
|
|
33
|
+
startTime: performance.now(),
|
|
34
|
+
metadata,
|
|
35
|
+
});
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* End measuring an operation and log the result
|
|
39
|
+
* 结束测量操作并记录结果
|
|
40
|
+
* @param id Unique ID used in startMeasure
|
|
41
|
+
* @param additionalMetadata Optional metadata to merge
|
|
42
|
+
* @returns Duration in milliseconds
|
|
43
|
+
*/
|
|
44
|
+
endMeasure(id, additionalMetadata) {
|
|
45
|
+
const metric = this.metrics.get(id);
|
|
46
|
+
if (!metric) {
|
|
47
|
+
// It's possible the metric was not started or already ended
|
|
48
|
+
return undefined;
|
|
49
|
+
}
|
|
50
|
+
const endTime = performance.now();
|
|
51
|
+
const duration = endTime - metric.startTime;
|
|
52
|
+
this.logger.info(`[Performance] ${metric.name}: ${duration.toFixed(2)}ms`, {
|
|
53
|
+
...metric.metadata,
|
|
54
|
+
...additionalMetadata,
|
|
55
|
+
duration,
|
|
56
|
+
});
|
|
57
|
+
this.metrics.delete(id);
|
|
58
|
+
return duration;
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Record a specific metric value
|
|
62
|
+
* 记录特定指标值
|
|
63
|
+
*/
|
|
64
|
+
recordMetric(name, value, metadata) {
|
|
65
|
+
this.logger.info(`[Metric] ${name}: ${value}`, metadata);
|
|
66
|
+
}
|
|
67
|
+
}exports.PerformanceMonitor=PerformanceMonitor;//# sourceMappingURL=PerformanceMonitor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PerformanceMonitor.js","sources":["../../../src/infrastructure/debug/PerformanceMonitor.ts"],"sourcesContent":["import { ILogger, Logger } from '@/infrastructure/logger';\n\nexport interface PerformanceMetric {\n name: string;\n startTime: number;\n endTime?: number;\n duration?: number;\n metadata?: any;\n}\n\n/**\n * PerformanceMonitor\n * 性能监控工具类\n *\n * Capabilities:\n * - Measure duration of operations (startMeasure/endMeasure)\n * - Record point-in-time metrics (recordMetric)\n * - Track operation frequency\n */\nexport class PerformanceMonitor {\n private static instance: PerformanceMonitor;\n private metrics: Map<string, PerformanceMetric> = new Map();\n private logger: ILogger;\n\n private constructor(logger?: ILogger) {\n this.logger = logger || new Logger({ appName: 'PerformanceMonitor' });\n }\n\n public static getInstance(logger?: ILogger): PerformanceMonitor {\n if (!PerformanceMonitor.instance) {\n PerformanceMonitor.instance = new PerformanceMonitor(logger);\n }\n return PerformanceMonitor.instance;\n }\n\n /**\n * Start measuring an operation\n * 开始测量操作\n * @param id Unique ID for this measurement (usually UUID or distinct name)\n * @param name Human-readable name of the operation\n * @param metadata Optional metadata\n */\n startMeasure(id: string, name: string, metadata?: any): void {\n this.metrics.set(id, {\n name,\n startTime: performance.now(),\n metadata,\n });\n }\n\n /**\n * End measuring an operation and log the result\n * 结束测量操作并记录结果\n * @param id Unique ID used in startMeasure\n * @param additionalMetadata Optional metadata to merge\n * @returns Duration in milliseconds\n */\n endMeasure(id: string, additionalMetadata?: any): number | undefined {\n const metric = this.metrics.get(id);\n if (!metric) {\n // It's possible the metric was not started or already ended\n return undefined;\n }\n\n const endTime = performance.now();\n const duration = endTime - metric.startTime;\n\n this.logger.info(`[Performance] ${metric.name}: ${duration.toFixed(2)}ms`, {\n ...metric.metadata,\n ...additionalMetadata,\n duration,\n });\n\n this.metrics.delete(id);\n return duration;\n }\n\n /**\n * Record a specific metric value\n * 记录特定指标值\n */\n recordMetric(name: string, value: number, metadata?: any): void {\n this.logger.info(`[Metric] ${name}: ${value}`, metadata);\n }\n}\n"],"names":["Logger"],"mappings":"uEAUA;;;;;;;;AAQG;MACU,kBAAkB,CAAA;IACrB,OAAO,QAAQ;AACf,IAAA,OAAO,GAAmC,IAAI,GAAG,EAAE;AACnD,IAAA,MAAM;AAEd,IAAA,WAAA,CAAoB,MAAgB,EAAA;AAClC,QAAA,IAAI,CAAC,MAAM,GAAG,MAAM,IAAI,IAAIA,6BAAM,CAAC,EAAE,OAAO,EAAE,oBAAoB,EAAE,CAAC;IACvE;IAEO,OAAO,WAAW,CAAC,MAAgB,EAAA;AACxC,QAAA,IAAI,CAAC,kBAAkB,CAAC,QAAQ,EAAE;YAChC,kBAAkB,CAAC,QAAQ,GAAG,IAAI,kBAAkB,CAAC,MAAM,CAAC;QAC9D;QACA,OAAO,kBAAkB,CAAC,QAAQ;IACpC;AAEA;;;;;;AAMG;AACH,IAAA,YAAY,CAAC,EAAU,EAAE,IAAY,EAAE,QAAc,EAAA;AACnD,QAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,EAAE;YACnB,IAAI;AACJ,YAAA,SAAS,EAAE,WAAW,CAAC,GAAG,EAAE;YAC5B,QAAQ;AACT,SAAA,CAAC;IACJ;AAEA;;;;;;AAMG;IACH,UAAU,CAAC,EAAU,EAAE,kBAAwB,EAAA;QAC7C,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;QACnC,IAAI,CAAC,MAAM,EAAE;;AAEX,YAAA,OAAO,SAAS;QAClB;AAEA,QAAA,MAAM,OAAO,GAAG,WAAW,CAAC,GAAG,EAAE;AACjC,QAAA,MAAM,QAAQ,GAAG,OAAO,GAAG,MAAM,CAAC,SAAS;AAE3C,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,iBAAiB,MAAM,CAAC,IAAI,CAAA,EAAA,EAAK,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,EAAE;YACzE,GAAG,MAAM,CAAC,QAAQ;AAClB,YAAA,GAAG,kBAAkB;YACrB,QAAQ;AACT,SAAA,CAAC;AAEF,QAAA,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;AACvB,QAAA,OAAO,QAAQ;IACjB;AAEA;;;AAGG;AACH,IAAA,YAAY,CAAC,IAAY,EAAE,KAAa,EAAE,QAAc,EAAA;AACtD,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA,SAAA,EAAY,IAAI,CAAA,EAAA,EAAK,KAAK,CAAA,CAAE,EAAE,QAAQ,CAAC;IAC1D;AACD"}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
import {ElectronLogger}from'../logger/ElectronLogger.mjs';/**
|
|
2
|
+
* PerformanceMonitor
|
|
3
|
+
* 性能监控工具类
|
|
4
|
+
*
|
|
5
|
+
* Capabilities:
|
|
6
|
+
* - Measure duration of operations (startMeasure/endMeasure)
|
|
7
|
+
* - Record point-in-time metrics (recordMetric)
|
|
8
|
+
* - Track operation frequency
|
|
9
|
+
*/
|
|
10
|
+
class PerformanceMonitor {
|
|
11
|
+
static instance;
|
|
12
|
+
metrics = new Map();
|
|
13
|
+
logger;
|
|
14
|
+
constructor(logger) {
|
|
15
|
+
this.logger = logger || new ElectronLogger({ appName: 'PerformanceMonitor' });
|
|
16
|
+
}
|
|
17
|
+
static getInstance(logger) {
|
|
18
|
+
if (!PerformanceMonitor.instance) {
|
|
19
|
+
PerformanceMonitor.instance = new PerformanceMonitor(logger);
|
|
20
|
+
}
|
|
21
|
+
return PerformanceMonitor.instance;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Start measuring an operation
|
|
25
|
+
* 开始测量操作
|
|
26
|
+
* @param id Unique ID for this measurement (usually UUID or distinct name)
|
|
27
|
+
* @param name Human-readable name of the operation
|
|
28
|
+
* @param metadata Optional metadata
|
|
29
|
+
*/
|
|
30
|
+
startMeasure(id, name, metadata) {
|
|
31
|
+
this.metrics.set(id, {
|
|
32
|
+
name,
|
|
33
|
+
startTime: performance.now(),
|
|
34
|
+
metadata,
|
|
35
|
+
});
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* End measuring an operation and log the result
|
|
39
|
+
* 结束测量操作并记录结果
|
|
40
|
+
* @param id Unique ID used in startMeasure
|
|
41
|
+
* @param additionalMetadata Optional metadata to merge
|
|
42
|
+
* @returns Duration in milliseconds
|
|
43
|
+
*/
|
|
44
|
+
endMeasure(id, additionalMetadata) {
|
|
45
|
+
const metric = this.metrics.get(id);
|
|
46
|
+
if (!metric) {
|
|
47
|
+
// It's possible the metric was not started or already ended
|
|
48
|
+
return undefined;
|
|
49
|
+
}
|
|
50
|
+
const endTime = performance.now();
|
|
51
|
+
const duration = endTime - metric.startTime;
|
|
52
|
+
this.logger.info(`[Performance] ${metric.name}: ${duration.toFixed(2)}ms`, {
|
|
53
|
+
...metric.metadata,
|
|
54
|
+
...additionalMetadata,
|
|
55
|
+
duration,
|
|
56
|
+
});
|
|
57
|
+
this.metrics.delete(id);
|
|
58
|
+
return duration;
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Record a specific metric value
|
|
62
|
+
* 记录特定指标值
|
|
63
|
+
*/
|
|
64
|
+
recordMetric(name, value, metadata) {
|
|
65
|
+
this.logger.info(`[Metric] ${name}: ${value}`, metadata);
|
|
66
|
+
}
|
|
67
|
+
}export{PerformanceMonitor};//# sourceMappingURL=PerformanceMonitor.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PerformanceMonitor.mjs","sources":["../../../src/infrastructure/debug/PerformanceMonitor.ts"],"sourcesContent":["import { ILogger, Logger } from '@/infrastructure/logger';\n\nexport interface PerformanceMetric {\n name: string;\n startTime: number;\n endTime?: number;\n duration?: number;\n metadata?: any;\n}\n\n/**\n * PerformanceMonitor\n * 性能监控工具类\n *\n * Capabilities:\n * - Measure duration of operations (startMeasure/endMeasure)\n * - Record point-in-time metrics (recordMetric)\n * - Track operation frequency\n */\nexport class PerformanceMonitor {\n private static instance: PerformanceMonitor;\n private metrics: Map<string, PerformanceMetric> = new Map();\n private logger: ILogger;\n\n private constructor(logger?: ILogger) {\n this.logger = logger || new Logger({ appName: 'PerformanceMonitor' });\n }\n\n public static getInstance(logger?: ILogger): PerformanceMonitor {\n if (!PerformanceMonitor.instance) {\n PerformanceMonitor.instance = new PerformanceMonitor(logger);\n }\n return PerformanceMonitor.instance;\n }\n\n /**\n * Start measuring an operation\n * 开始测量操作\n * @param id Unique ID for this measurement (usually UUID or distinct name)\n * @param name Human-readable name of the operation\n * @param metadata Optional metadata\n */\n startMeasure(id: string, name: string, metadata?: any): void {\n this.metrics.set(id, {\n name,\n startTime: performance.now(),\n metadata,\n });\n }\n\n /**\n * End measuring an operation and log the result\n * 结束测量操作并记录结果\n * @param id Unique ID used in startMeasure\n * @param additionalMetadata Optional metadata to merge\n * @returns Duration in milliseconds\n */\n endMeasure(id: string, additionalMetadata?: any): number | undefined {\n const metric = this.metrics.get(id);\n if (!metric) {\n // It's possible the metric was not started or already ended\n return undefined;\n }\n\n const endTime = performance.now();\n const duration = endTime - metric.startTime;\n\n this.logger.info(`[Performance] ${metric.name}: ${duration.toFixed(2)}ms`, {\n ...metric.metadata,\n ...additionalMetadata,\n duration,\n });\n\n this.metrics.delete(id);\n return duration;\n }\n\n /**\n * Record a specific metric value\n * 记录特定指标值\n */\n recordMetric(name: string, value: number, metadata?: any): void {\n this.logger.info(`[Metric] ${name}: ${value}`, metadata);\n }\n}\n"],"names":["Logger"],"mappings":"0DAUA;;;;;;;;AAQG;MACU,kBAAkB,CAAA;IACrB,OAAO,QAAQ;AACf,IAAA,OAAO,GAAmC,IAAI,GAAG,EAAE;AACnD,IAAA,MAAM;AAEd,IAAA,WAAA,CAAoB,MAAgB,EAAA;AAClC,QAAA,IAAI,CAAC,MAAM,GAAG,MAAM,IAAI,IAAIA,cAAM,CAAC,EAAE,OAAO,EAAE,oBAAoB,EAAE,CAAC;IACvE;IAEO,OAAO,WAAW,CAAC,MAAgB,EAAA;AACxC,QAAA,IAAI,CAAC,kBAAkB,CAAC,QAAQ,EAAE;YAChC,kBAAkB,CAAC,QAAQ,GAAG,IAAI,kBAAkB,CAAC,MAAM,CAAC;QAC9D;QACA,OAAO,kBAAkB,CAAC,QAAQ;IACpC;AAEA;;;;;;AAMG;AACH,IAAA,YAAY,CAAC,EAAU,EAAE,IAAY,EAAE,QAAc,EAAA;AACnD,QAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,EAAE;YACnB,IAAI;AACJ,YAAA,SAAS,EAAE,WAAW,CAAC,GAAG,EAAE;YAC5B,QAAQ;AACT,SAAA,CAAC;IACJ;AAEA;;;;;;AAMG;IACH,UAAU,CAAC,EAAU,EAAE,kBAAwB,EAAA;QAC7C,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;QACnC,IAAI,CAAC,MAAM,EAAE;;AAEX,YAAA,OAAO,SAAS;QAClB;AAEA,QAAA,MAAM,OAAO,GAAG,WAAW,CAAC,GAAG,EAAE;AACjC,QAAA,MAAM,QAAQ,GAAG,OAAO,GAAG,MAAM,CAAC,SAAS;AAE3C,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,iBAAiB,MAAM,CAAC,IAAI,CAAA,EAAA,EAAK,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,EAAE;YACzE,GAAG,MAAM,CAAC,QAAQ;AAClB,YAAA,GAAG,kBAAkB;YACrB,QAAQ;AACT,SAAA,CAAC;AAEF,QAAA,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;AACvB,QAAA,OAAO,QAAQ;IACjB;AAEA;;;AAGG;AACH,IAAA,YAAY,CAAC,IAAY,EAAE,KAAa,EAAE,QAAc,EAAA;AACtD,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA,SAAA,EAAY,IAAI,CAAA,EAAA,EAAK,KAAK,CAAA,CAAE,EAAE,QAAQ,CAAC;IAC1D;AACD"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Debug Helper
|
|
3
|
+
* 调试助手
|
|
4
|
+
*/
|
|
5
|
+
export declare class DebugHelper {
|
|
6
|
+
private static isDebugEnabled;
|
|
7
|
+
/**
|
|
8
|
+
* Enable debug mode
|
|
9
|
+
* 启用调试模式
|
|
10
|
+
*/
|
|
11
|
+
static enableDebugMode(): void;
|
|
12
|
+
/**
|
|
13
|
+
* Register instance for debugging
|
|
14
|
+
* 注册实例以供调试
|
|
15
|
+
*
|
|
16
|
+
* @param name Instance name (实例名称)
|
|
17
|
+
* @param instance Instance object (实例对象)
|
|
18
|
+
*/
|
|
19
|
+
static register(name: string, instance: any): void;
|
|
20
|
+
}
|
|
21
|
+
export * from './EnhancedDebugHelper';
|
|
22
|
+
export * from './PerformanceMonitor';
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
'use strict';/**
|
|
2
|
+
* Debug Helper
|
|
3
|
+
* 调试助手
|
|
4
|
+
*/
|
|
5
|
+
class DebugHelper {
|
|
6
|
+
static isDebugEnabled = false;
|
|
7
|
+
/**
|
|
8
|
+
* Enable debug mode
|
|
9
|
+
* 启用调试模式
|
|
10
|
+
*/
|
|
11
|
+
static enableDebugMode() {
|
|
12
|
+
if (this.isDebugEnabled)
|
|
13
|
+
return;
|
|
14
|
+
// 1. Enable verbose logging
|
|
15
|
+
// 启用详细日志
|
|
16
|
+
process.env.ELECTRON_TOOLKIT_DEBUG = 'true';
|
|
17
|
+
this.isDebugEnabled = true;
|
|
18
|
+
// 2. Expose global debug object
|
|
19
|
+
// 暴露全局调试对象
|
|
20
|
+
if (process.type === 'browser') {
|
|
21
|
+
global.__ELECTRON_TOOLKIT_DEBUG__ = {
|
|
22
|
+
instances: {},
|
|
23
|
+
// Debug methods
|
|
24
|
+
// 调试方法
|
|
25
|
+
listInstances: () => {
|
|
26
|
+
return Object.keys(global.__ELECTRON_TOOLKIT_DEBUG__.instances);
|
|
27
|
+
},
|
|
28
|
+
getInstance: (name) => {
|
|
29
|
+
return global.__ELECTRON_TOOLKIT_DEBUG__.instances[name];
|
|
30
|
+
},
|
|
31
|
+
};
|
|
32
|
+
console.log('[ElectronToolkit] Debug mode enabled. Access global.__ELECTRON_TOOLKIT_DEBUG__ for details.');
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Register instance for debugging
|
|
37
|
+
* 注册实例以供调试
|
|
38
|
+
*
|
|
39
|
+
* @param name Instance name (实例名称)
|
|
40
|
+
* @param instance Instance object (实例对象)
|
|
41
|
+
*/
|
|
42
|
+
static register(name, instance) {
|
|
43
|
+
if (process.type === 'browser' && global.__ELECTRON_TOOLKIT_DEBUG__) {
|
|
44
|
+
global.__ELECTRON_TOOLKIT_DEBUG__.instances[name] = instance;
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
}exports.DebugHelper=DebugHelper;//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../src/infrastructure/debug/index.ts"],"sourcesContent":["/**\n * Debug Helper\n * 调试助手\n */\nexport class DebugHelper {\n private static isDebugEnabled = false;\n\n /**\n * Enable debug mode\n * 启用调试模式\n */\n static enableDebugMode(): void {\n if (this.isDebugEnabled) return;\n\n // 1. Enable verbose logging\n // 启用详细日志\n process.env.ELECTRON_TOOLKIT_DEBUG = 'true';\n this.isDebugEnabled = true;\n\n // 2. Expose global debug object\n // 暴露全局调试对象\n if (process.type === 'browser') {\n (global as any).__ELECTRON_TOOLKIT_DEBUG__ = {\n instances: {},\n\n // Debug methods\n // 调试方法\n listInstances: () => {\n return Object.keys((global as any).__ELECTRON_TOOLKIT_DEBUG__.instances);\n },\n\n getInstance: (name: string) => {\n return (global as any).__ELECTRON_TOOLKIT_DEBUG__.instances[name];\n },\n };\n\n console.log(\n '[ElectronToolkit] Debug mode enabled. Access global.__ELECTRON_TOOLKIT_DEBUG__ for details.'\n );\n }\n }\n\n /**\n * Register instance for debugging\n * 注册实例以供调试\n *\n * @param name Instance name (实例名称)\n * @param instance Instance object (实例对象)\n */\n static register(name: string, instance: any): void {\n if (process.type === 'browser' && (global as any).__ELECTRON_TOOLKIT_DEBUG__) {\n (global as any).__ELECTRON_TOOLKIT_DEBUG__.instances[name] = instance;\n }\n }\n}\n\n// Export enhanced debug helper\nexport * from './EnhancedDebugHelper';\nexport * from './PerformanceMonitor';\n"],"names":[],"mappings":"aAAA;;;AAGG;MACU,WAAW,CAAA;AACd,IAAA,OAAO,cAAc,GAAG,KAAK;AAErC;;;AAGG;AACH,IAAA,OAAO,eAAe,GAAA;QACpB,IAAI,IAAI,CAAC,cAAc;YAAE;;;AAIzB,QAAA,OAAO,CAAC,GAAG,CAAC,sBAAsB,GAAG,MAAM;AAC3C,QAAA,IAAI,CAAC,cAAc,GAAG,IAAI;;;AAI1B,QAAA,IAAI,OAAO,CAAC,IAAI,KAAK,SAAS,EAAE;YAC7B,MAAc,CAAC,0BAA0B,GAAG;AAC3C,gBAAA,SAAS,EAAE,EAAE;;;gBAIb,aAAa,EAAE,MAAK;oBAClB,OAAO,MAAM,CAAC,IAAI,CAAE,MAAc,CAAC,0BAA0B,CAAC,SAAS,CAAC;gBAC1E,CAAC;AAED,gBAAA,WAAW,EAAE,CAAC,IAAY,KAAI;oBAC5B,OAAQ,MAAc,CAAC,0BAA0B,CAAC,SAAS,CAAC,IAAI,CAAC;gBACnE,CAAC;aACF;AAED,YAAA,OAAO,CAAC,GAAG,CACT,6FAA6F,CAC9F;QACH;IACF;AAEA;;;;;;AAMG;AACH,IAAA,OAAO,QAAQ,CAAC,IAAY,EAAE,QAAa,EAAA;QACzC,IAAI,OAAO,CAAC,IAAI,KAAK,SAAS,IAAK,MAAc,CAAC,0BAA0B,EAAE;YAC3E,MAAc,CAAC,0BAA0B,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,QAAQ;QACvE;IACF;"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Debug Helper
|
|
3
|
+
* 调试助手
|
|
4
|
+
*/
|
|
5
|
+
class DebugHelper {
|
|
6
|
+
static isDebugEnabled = false;
|
|
7
|
+
/**
|
|
8
|
+
* Enable debug mode
|
|
9
|
+
* 启用调试模式
|
|
10
|
+
*/
|
|
11
|
+
static enableDebugMode() {
|
|
12
|
+
if (this.isDebugEnabled)
|
|
13
|
+
return;
|
|
14
|
+
// 1. Enable verbose logging
|
|
15
|
+
// 启用详细日志
|
|
16
|
+
process.env.ELECTRON_TOOLKIT_DEBUG = 'true';
|
|
17
|
+
this.isDebugEnabled = true;
|
|
18
|
+
// 2. Expose global debug object
|
|
19
|
+
// 暴露全局调试对象
|
|
20
|
+
if (process.type === 'browser') {
|
|
21
|
+
global.__ELECTRON_TOOLKIT_DEBUG__ = {
|
|
22
|
+
instances: {},
|
|
23
|
+
// Debug methods
|
|
24
|
+
// 调试方法
|
|
25
|
+
listInstances: () => {
|
|
26
|
+
return Object.keys(global.__ELECTRON_TOOLKIT_DEBUG__.instances);
|
|
27
|
+
},
|
|
28
|
+
getInstance: (name) => {
|
|
29
|
+
return global.__ELECTRON_TOOLKIT_DEBUG__.instances[name];
|
|
30
|
+
},
|
|
31
|
+
};
|
|
32
|
+
console.log('[ElectronToolkit] Debug mode enabled. Access global.__ELECTRON_TOOLKIT_DEBUG__ for details.');
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Register instance for debugging
|
|
37
|
+
* 注册实例以供调试
|
|
38
|
+
*
|
|
39
|
+
* @param name Instance name (实例名称)
|
|
40
|
+
* @param instance Instance object (实例对象)
|
|
41
|
+
*/
|
|
42
|
+
static register(name, instance) {
|
|
43
|
+
if (process.type === 'browser' && global.__ELECTRON_TOOLKIT_DEBUG__) {
|
|
44
|
+
global.__ELECTRON_TOOLKIT_DEBUG__.instances[name] = instance;
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
}export{DebugHelper};//# sourceMappingURL=index.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.mjs","sources":["../../../src/infrastructure/debug/index.ts"],"sourcesContent":["/**\n * Debug Helper\n * 调试助手\n */\nexport class DebugHelper {\n private static isDebugEnabled = false;\n\n /**\n * Enable debug mode\n * 启用调试模式\n */\n static enableDebugMode(): void {\n if (this.isDebugEnabled) return;\n\n // 1. Enable verbose logging\n // 启用详细日志\n process.env.ELECTRON_TOOLKIT_DEBUG = 'true';\n this.isDebugEnabled = true;\n\n // 2. Expose global debug object\n // 暴露全局调试对象\n if (process.type === 'browser') {\n (global as any).__ELECTRON_TOOLKIT_DEBUG__ = {\n instances: {},\n\n // Debug methods\n // 调试方法\n listInstances: () => {\n return Object.keys((global as any).__ELECTRON_TOOLKIT_DEBUG__.instances);\n },\n\n getInstance: (name: string) => {\n return (global as any).__ELECTRON_TOOLKIT_DEBUG__.instances[name];\n },\n };\n\n console.log(\n '[ElectronToolkit] Debug mode enabled. Access global.__ELECTRON_TOOLKIT_DEBUG__ for details.'\n );\n }\n }\n\n /**\n * Register instance for debugging\n * 注册实例以供调试\n *\n * @param name Instance name (实例名称)\n * @param instance Instance object (实例对象)\n */\n static register(name: string, instance: any): void {\n if (process.type === 'browser' && (global as any).__ELECTRON_TOOLKIT_DEBUG__) {\n (global as any).__ELECTRON_TOOLKIT_DEBUG__.instances[name] = instance;\n }\n }\n}\n\n// Export enhanced debug helper\nexport * from './EnhancedDebugHelper';\nexport * from './PerformanceMonitor';\n"],"names":[],"mappings":"AAAA;;;AAGG;MACU,WAAW,CAAA;AACd,IAAA,OAAO,cAAc,GAAG,KAAK;AAErC;;;AAGG;AACH,IAAA,OAAO,eAAe,GAAA;QACpB,IAAI,IAAI,CAAC,cAAc;YAAE;;;AAIzB,QAAA,OAAO,CAAC,GAAG,CAAC,sBAAsB,GAAG,MAAM;AAC3C,QAAA,IAAI,CAAC,cAAc,GAAG,IAAI;;;AAI1B,QAAA,IAAI,OAAO,CAAC,IAAI,KAAK,SAAS,EAAE;YAC7B,MAAc,CAAC,0BAA0B,GAAG;AAC3C,gBAAA,SAAS,EAAE,EAAE;;;gBAIb,aAAa,EAAE,MAAK;oBAClB,OAAO,MAAM,CAAC,IAAI,CAAE,MAAc,CAAC,0BAA0B,CAAC,SAAS,CAAC;gBAC1E,CAAC;AAED,gBAAA,WAAW,EAAE,CAAC,IAAY,KAAI;oBAC5B,OAAQ,MAAc,CAAC,0BAA0B,CAAC,SAAS,CAAC,IAAI,CAAC;gBACnE,CAAC;aACF;AAED,YAAA,OAAO,CAAC,GAAG,CACT,6FAA6F,CAC9F;QACH;IACF;AAEA;;;;;;AAMG;AACH,IAAA,OAAO,QAAQ,CAAC,IAAY,EAAE,QAAa,EAAA;QACzC,IAAI,OAAO,CAAC,IAAI,KAAK,SAAS,IAAK,MAAc,CAAC,0BAA0B,EAAE;YAC3E,MAAc,CAAC,0BAA0B,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,QAAQ;QACvE;IACF;"}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Unified Error Codes for electron-infra-kit
|
|
3
|
+
* 统一的错误码定义
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* IPC Error Codes
|
|
7
|
+
* IPC 错误码
|
|
8
|
+
*/
|
|
9
|
+
export declare enum IpcErrorCode {
|
|
10
|
+
/** Success */
|
|
11
|
+
SUCCESS = 0,
|
|
12
|
+
/** Bad Request - Invalid payload or parameters */
|
|
13
|
+
BAD_REQUEST = 400,
|
|
14
|
+
/** Forbidden - Permission denied */
|
|
15
|
+
FORBIDDEN = 403,
|
|
16
|
+
/** Not Found - Handler not found */
|
|
17
|
+
NOT_FOUND = 404,
|
|
18
|
+
/** Validation Error - Schema validation failed */
|
|
19
|
+
VALIDATION_ERROR = 422,
|
|
20
|
+
/** Internal Server Error */
|
|
21
|
+
INTERNAL_ERROR = 500,
|
|
22
|
+
/** Handler Execution Error */
|
|
23
|
+
HANDLER_ERROR = 501
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* MessageBus Error Codes
|
|
27
|
+
* MessageBus 错误码
|
|
28
|
+
*/
|
|
29
|
+
export declare enum MessageBusErrorCode {
|
|
30
|
+
/** Success */
|
|
31
|
+
SUCCESS = 0,
|
|
32
|
+
/** Permission Denied - Field permission check failed */
|
|
33
|
+
PERMISSION_DENIED = 403,
|
|
34
|
+
/** Not Found - Window or field not found */
|
|
35
|
+
NOT_FOUND = 404,
|
|
36
|
+
/** Invalid Operation */
|
|
37
|
+
INVALID_OPERATION = 400,
|
|
38
|
+
/** Internal Error */
|
|
39
|
+
INTERNAL_ERROR = 500
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* WindowManager Error Codes
|
|
43
|
+
* WindowManager 错误码
|
|
44
|
+
*/
|
|
45
|
+
export declare enum WindowManagerErrorCode {
|
|
46
|
+
/** Success */
|
|
47
|
+
SUCCESS = 0,
|
|
48
|
+
/** Window Not Found */
|
|
49
|
+
WINDOW_NOT_FOUND = 404,
|
|
50
|
+
/** Window Already Exists */
|
|
51
|
+
WINDOW_ALREADY_EXISTS = 409,
|
|
52
|
+
/** Invalid Configuration */
|
|
53
|
+
INVALID_CONFIG = 400,
|
|
54
|
+
/** Creation Failed */
|
|
55
|
+
CREATION_FAILED = 500,
|
|
56
|
+
/** Operation Failed */
|
|
57
|
+
OPERATION_FAILED = 500
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Error Category
|
|
61
|
+
* 错误类别
|
|
62
|
+
*/
|
|
63
|
+
export declare enum ErrorCategory {
|
|
64
|
+
/** Validation Error */
|
|
65
|
+
VALIDATION = "VALIDATION",
|
|
66
|
+
/** Permission Error */
|
|
67
|
+
PERMISSION = "PERMISSION",
|
|
68
|
+
/** Not Found Error */
|
|
69
|
+
NOT_FOUND = "NOT_FOUND",
|
|
70
|
+
/** Internal Error */
|
|
71
|
+
INTERNAL = "INTERNAL",
|
|
72
|
+
/** Business Logic Error */
|
|
73
|
+
BUSINESS = "BUSINESS"
|
|
74
|
+
}
|