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,65 @@
|
|
|
1
|
+
import LoggerService from'electron-log';/**
|
|
2
|
+
* Default logger implementation using electron-log
|
|
3
|
+
* 使用 electron-log 的默认日志实现
|
|
4
|
+
*/
|
|
5
|
+
class ElectronLogger {
|
|
6
|
+
logger;
|
|
7
|
+
isDev;
|
|
8
|
+
/**
|
|
9
|
+
* Constructor for Logger
|
|
10
|
+
* 日志记录器构造函数
|
|
11
|
+
* @param options - Logger configuration options
|
|
12
|
+
*/
|
|
13
|
+
constructor(options = {}) {
|
|
14
|
+
this.isDev = process.env.NODE_ENV !== 'production';
|
|
15
|
+
const { appName = 'main', maxSize = 10 * 1024 * 1024, // Default 10MB
|
|
16
|
+
fileName, fileLevel, consoleLevel, } = options;
|
|
17
|
+
// Create a logger instance for either 'main' or 'renderer'
|
|
18
|
+
this.logger = LoggerService.create({ logId: appName });
|
|
19
|
+
this.logger.scope(appName);
|
|
20
|
+
// Set log levels with smart defaults based on environment
|
|
21
|
+
// 根据环境设置日志级别,使用智能默认值
|
|
22
|
+
const defaultFileLevel = this.isDev ? 'debug' : 'info';
|
|
23
|
+
const defaultConsoleLevel = this.isDev ? 'debug' : false;
|
|
24
|
+
this.logger.transports.file.level = fileLevel ?? defaultFileLevel;
|
|
25
|
+
this.logger.transports.console.level = consoleLevel ?? defaultConsoleLevel;
|
|
26
|
+
// Optimize log format with date and log level
|
|
27
|
+
// 优化日志格式,增加日期和日志级别
|
|
28
|
+
this.logger.transports.file.format = '[{y}-{m}-{d} {h}:{i}:{s}.{ms}] [{level}] {text}';
|
|
29
|
+
// Set maximum file size (configurable)
|
|
30
|
+
// 设置最大文件大小(可配置)
|
|
31
|
+
this.logger.transports.file.maxSize = maxSize;
|
|
32
|
+
// Set log file name (configurable or default based on environment)
|
|
33
|
+
// 设置日志文件名(可配置或根据环境使用默认值)
|
|
34
|
+
this.logger.transports.file.fileName =
|
|
35
|
+
fileName ?? (this.isDev ? `${appName}_dev.log` : `${appName}.log`);
|
|
36
|
+
}
|
|
37
|
+
// Info log
|
|
38
|
+
info(message, ...args) {
|
|
39
|
+
this.logger.info(message, ...args);
|
|
40
|
+
}
|
|
41
|
+
// Debug log
|
|
42
|
+
debug(message, ...args) {
|
|
43
|
+
this.logger.debug(message, ...args);
|
|
44
|
+
}
|
|
45
|
+
// Error log
|
|
46
|
+
error(message, ...args) {
|
|
47
|
+
this.logger.error(message, ...args);
|
|
48
|
+
}
|
|
49
|
+
// Warn log
|
|
50
|
+
warn(message, ...args) {
|
|
51
|
+
this.logger.warn(message, ...args);
|
|
52
|
+
}
|
|
53
|
+
// Verbose log
|
|
54
|
+
verbose(message, ...args) {
|
|
55
|
+
this.logger.verbose(message, ...args);
|
|
56
|
+
}
|
|
57
|
+
// Silly log
|
|
58
|
+
silly(message, ...args) {
|
|
59
|
+
this.logger.silly(message, ...args);
|
|
60
|
+
}
|
|
61
|
+
// Get the logger instance (useful if you need more custom configurations)
|
|
62
|
+
getLogger() {
|
|
63
|
+
return this.logger;
|
|
64
|
+
}
|
|
65
|
+
}export{ElectronLogger};//# sourceMappingURL=ElectronLogger.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ElectronLogger.mjs","sources":["../../../src/infrastructure/logger/ElectronLogger.ts"],"sourcesContent":["import LoggerService from 'electron-log';\nimport { ILogger } from './logger.type';\n\n/**\n * Logger Configuration Options\n * 日志配置选项\n */\nexport interface LoggerOptions {\n /** Application name for log identification / 应用名称用于日志标识 */\n appName?: string;\n /** Maximum log file size in bytes / 最大日志文件大小(字节) */\n maxSize?: number;\n /** Custom log file name / 自定义日志文件名 */\n fileName?: string;\n /** File log level / 文件日志级别 */\n fileLevel?: 'debug' | 'info' | 'warn' | 'error' | 'verbose' | 'silly' | false;\n /** Console log level / 控制台日志级别 */\n consoleLevel?: 'debug' | 'info' | 'warn' | 'error' | 'verbose' | 'silly' | false;\n}\n\n/**\n * Default logger implementation using electron-log\n * 使用 electron-log 的默认日志实现\n */\nexport class ElectronLogger implements ILogger {\n private logger: typeof LoggerService;\n private isDev: boolean;\n\n /**\n * Constructor for Logger\n * 日志记录器构造函数\n * @param options - Logger configuration options\n */\n constructor(options: LoggerOptions = {}) {\n this.isDev = process.env.NODE_ENV !== 'production';\n\n const {\n appName = 'main',\n maxSize = 10 * 1024 * 1024, // Default 10MB\n fileName,\n fileLevel,\n consoleLevel,\n } = options;\n\n // Create a logger instance for either 'main' or 'renderer'\n this.logger = LoggerService.create({ logId: appName });\n this.logger.scope(appName);\n\n // Set log levels with smart defaults based on environment\n // 根据环境设置日志级别,使用智能默认值\n const defaultFileLevel = this.isDev ? 'debug' : 'info';\n const defaultConsoleLevel = this.isDev ? 'debug' : false;\n\n this.logger.transports.file.level = fileLevel ?? defaultFileLevel;\n this.logger.transports.console.level = consoleLevel ?? defaultConsoleLevel;\n\n // Optimize log format with date and log level\n // 优化日志格式,增加日期和日志级别\n this.logger.transports.file.format = '[{y}-{m}-{d} {h}:{i}:{s}.{ms}] [{level}] {text}';\n\n // Set maximum file size (configurable)\n // 设置最大文件大小(可配置)\n this.logger.transports.file.maxSize = maxSize;\n\n // Set log file name (configurable or default based on environment)\n // 设置日志文件名(可配置或根据环境使用默认值)\n this.logger.transports.file.fileName =\n fileName ?? (this.isDev ? `${appName}_dev.log` : `${appName}.log`);\n }\n\n // Info log\n info(message: string, ...args: any[]): void {\n this.logger.info(message, ...args);\n }\n\n // Debug log\n debug(message: string, ...args: any[]): void {\n this.logger.debug(message, ...args);\n }\n\n // Error log\n error(message: string, ...args: any[]): void {\n this.logger.error(message, ...args);\n }\n\n // Warn log\n warn(message: string, ...args: any[]): void {\n this.logger.warn(message, ...args);\n }\n\n // Verbose log\n verbose(message: string, ...args: any[]): void {\n this.logger.verbose(message, ...args);\n }\n\n // Silly log\n silly(message: string, ...args: any[]): void {\n this.logger.silly(message, ...args);\n }\n\n // Get the logger instance (useful if you need more custom configurations)\n getLogger(): typeof LoggerService {\n return this.logger;\n }\n}\n"],"names":[],"mappings":"wCAoBA;;;AAGG;MACU,cAAc,CAAA;AACjB,IAAA,MAAM;AACN,IAAA,KAAK;AAEb;;;;AAIG;AACH,IAAA,WAAA,CAAY,UAAyB,EAAE,EAAA;QACrC,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,YAAY;AAElD,QAAA,MAAM,EACJ,OAAO,GAAG,MAAM,EAChB,OAAO,GAAG,EAAE,GAAG,IAAI,GAAG,IAAI;AAC1B,QAAA,QAAQ,EACR,SAAS,EACT,YAAY,GACb,GAAG,OAAO;;AAGX,QAAA,IAAI,CAAC,MAAM,GAAG,aAAa,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC;AACtD,QAAA,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC;;;AAI1B,QAAA,MAAM,gBAAgB,GAAG,IAAI,CAAC,KAAK,GAAG,OAAO,GAAG,MAAM;AACtD,QAAA,MAAM,mBAAmB,GAAG,IAAI,CAAC,KAAK,GAAG,OAAO,GAAG,KAAK;AAExD,QAAA,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,GAAG,SAAS,IAAI,gBAAgB;AACjE,QAAA,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,KAAK,GAAG,YAAY,IAAI,mBAAmB;;;QAI1E,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,GAAG,iDAAiD;;;QAItF,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,GAAG,OAAO;;;AAI7C,QAAA,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ;AAClC,YAAA,QAAQ,KAAK,IAAI,CAAC,KAAK,GAAG,CAAA,EAAG,OAAO,CAAA,QAAA,CAAU,GAAG,GAAG,OAAO,CAAA,IAAA,CAAM,CAAC;IACtE;;AAGA,IAAA,IAAI,CAAC,OAAe,EAAE,GAAG,IAAW,EAAA;QAClC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC;IACpC;;AAGA,IAAA,KAAK,CAAC,OAAe,EAAE,GAAG,IAAW,EAAA;QACnC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC;IACrC;;AAGA,IAAA,KAAK,CAAC,OAAe,EAAE,GAAG,IAAW,EAAA;QACnC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC;IACrC;;AAGA,IAAA,IAAI,CAAC,OAAe,EAAE,GAAG,IAAW,EAAA;QAClC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC;IACpC;;AAGA,IAAA,OAAO,CAAC,OAAe,EAAE,GAAG,IAAW,EAAA;QACrC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC;IACvC;;AAGA,IAAA,KAAK,CAAC,OAAe,EAAE,GAAG,IAAW,EAAA;QACnC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC;IACrC;;IAGA,SAAS,GAAA;QACP,OAAO,IAAI,CAAC,MAAM;IACpB;AACD"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export interface ILogger {
|
|
2
|
+
info(message: string, ...args: any[]): void;
|
|
3
|
+
debug(message: string, ...args: any[]): void;
|
|
4
|
+
error(message: string, ...args: any[]): void;
|
|
5
|
+
warn(message: string, ...args: any[]): void;
|
|
6
|
+
verbose?(message: string, ...args: any[]): void;
|
|
7
|
+
silly?(message: string, ...args: any[]): void;
|
|
8
|
+
}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Brand Types for Type Safety
|
|
3
|
+
* 品牌类型用于增强类型安全
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* Window ID - Branded string type
|
|
7
|
+
* 窗口 ID - 品牌字符串类型
|
|
8
|
+
*/
|
|
9
|
+
export type WindowId = string & {
|
|
10
|
+
readonly __brand: 'WindowId';
|
|
11
|
+
};
|
|
12
|
+
/**
|
|
13
|
+
* Event Name - Branded string type
|
|
14
|
+
* 事件名称 - 品牌字符串类型
|
|
15
|
+
*/
|
|
16
|
+
export type EventName = string & {
|
|
17
|
+
readonly __brand: 'EventName';
|
|
18
|
+
};
|
|
19
|
+
/**
|
|
20
|
+
* Channel Name - Branded string type
|
|
21
|
+
* 频道名称 - 品牌字符串类型
|
|
22
|
+
*/
|
|
23
|
+
export type ChannelName = string & {
|
|
24
|
+
readonly __brand: 'ChannelName';
|
|
25
|
+
};
|
|
26
|
+
/**
|
|
27
|
+
* Handler Name - Branded string type
|
|
28
|
+
* 处理器名称 - 品牌字符串类型
|
|
29
|
+
*/
|
|
30
|
+
export type HandlerName = string & {
|
|
31
|
+
readonly __brand: 'HandlerName';
|
|
32
|
+
};
|
|
33
|
+
/**
|
|
34
|
+
* Field Key - Branded string type for MessageBus fields
|
|
35
|
+
* 字段键 - MessageBus 字段的品牌字符串类型
|
|
36
|
+
*/
|
|
37
|
+
export type FieldKey = string & {
|
|
38
|
+
readonly __brand: 'FieldKey';
|
|
39
|
+
};
|
|
40
|
+
/**
|
|
41
|
+
* Create a WindowId from a string with validation
|
|
42
|
+
* 从字符串创建 WindowId (带验证)
|
|
43
|
+
*/
|
|
44
|
+
export declare function createWindowId(id: string): WindowId;
|
|
45
|
+
/**
|
|
46
|
+
* Create an EventName from a string with validation
|
|
47
|
+
* 从字符串创建 EventName (带验证)
|
|
48
|
+
*/
|
|
49
|
+
export declare function createEventName(name: string): EventName;
|
|
50
|
+
/**
|
|
51
|
+
* Create a ChannelName from a string with validation
|
|
52
|
+
* 从字符串创建 ChannelName (带验证)
|
|
53
|
+
*/
|
|
54
|
+
export declare function createChannelName(name: string): ChannelName;
|
|
55
|
+
/**
|
|
56
|
+
* Create a HandlerName from a string with validation
|
|
57
|
+
* 从字符串创建 HandlerName (带验证)
|
|
58
|
+
*/
|
|
59
|
+
export declare function createHandlerName(name: string): HandlerName;
|
|
60
|
+
/**
|
|
61
|
+
* Create a FieldKey from a string with validation
|
|
62
|
+
* 从字符串创建 FieldKey (带验证)
|
|
63
|
+
*/
|
|
64
|
+
export declare function createFieldKey(key: string): FieldKey;
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
'use strict';/**
|
|
2
|
+
* Brand Types for Type Safety
|
|
3
|
+
* 品牌类型用于增强类型安全
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* Create a WindowId from a string with validation
|
|
7
|
+
* 从字符串创建 WindowId (带验证)
|
|
8
|
+
*/
|
|
9
|
+
function createWindowId(id) {
|
|
10
|
+
if (!id || typeof id !== 'string') {
|
|
11
|
+
throw new Error('Invalid window ID: must be a non-empty string');
|
|
12
|
+
}
|
|
13
|
+
return id;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Create an EventName from a string with validation
|
|
17
|
+
* 从字符串创建 EventName (带验证)
|
|
18
|
+
*/
|
|
19
|
+
function createEventName(name) {
|
|
20
|
+
if (!name || typeof name !== 'string') {
|
|
21
|
+
throw new Error('Invalid event name: must be a non-empty string');
|
|
22
|
+
}
|
|
23
|
+
return name;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Create a ChannelName from a string with validation
|
|
27
|
+
* 从字符串创建 ChannelName (带验证)
|
|
28
|
+
*/
|
|
29
|
+
function createChannelName(name) {
|
|
30
|
+
if (!name || typeof name !== 'string') {
|
|
31
|
+
throw new Error('Invalid channel name: must be a non-empty string');
|
|
32
|
+
}
|
|
33
|
+
return name;
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Create a HandlerName from a string with validation
|
|
37
|
+
* 从字符串创建 HandlerName (带验证)
|
|
38
|
+
*/
|
|
39
|
+
function createHandlerName(name) {
|
|
40
|
+
if (!name || typeof name !== 'string') {
|
|
41
|
+
throw new Error('Invalid handler name: must be a non-empty string');
|
|
42
|
+
}
|
|
43
|
+
return name;
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Create a FieldKey from a string with validation
|
|
47
|
+
* 从字符串创建 FieldKey (带验证)
|
|
48
|
+
*/
|
|
49
|
+
function createFieldKey(key) {
|
|
50
|
+
if (!key || typeof key !== 'string') {
|
|
51
|
+
throw new Error('Invalid field key: must be a non-empty string');
|
|
52
|
+
}
|
|
53
|
+
return key;
|
|
54
|
+
}exports.createChannelName=createChannelName;exports.createEventName=createEventName;exports.createFieldKey=createFieldKey;exports.createHandlerName=createHandlerName;exports.createWindowId=createWindowId;//# sourceMappingURL=BrandedTypes.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BrandedTypes.js","sources":["../../../src/internal/types/BrandedTypes.ts"],"sourcesContent":["/**\n * Brand Types for Type Safety\n * 品牌类型用于增强类型安全\n */\n\n/**\n * Window ID - Branded string type\n * 窗口 ID - 品牌字符串类型\n */\nexport type WindowId = string & { readonly __brand: 'WindowId' };\n\n/**\n * Event Name - Branded string type\n * 事件名称 - 品牌字符串类型\n */\nexport type EventName = string & { readonly __brand: 'EventName' };\n\n/**\n * Channel Name - Branded string type\n * 频道名称 - 品牌字符串类型\n */\nexport type ChannelName = string & { readonly __brand: 'ChannelName' };\n\n/**\n * Handler Name - Branded string type\n * 处理器名称 - 品牌字符串类型\n */\nexport type HandlerName = string & { readonly __brand: 'HandlerName' };\n\n/**\n * Field Key - Branded string type for MessageBus fields\n * 字段键 - MessageBus 字段的品牌字符串类型\n */\nexport type FieldKey = string & { readonly __brand: 'FieldKey' };\n\n/**\n * Create a WindowId from a string with validation\n * 从字符串创建 WindowId (带验证)\n */\nexport function createWindowId(id: string): WindowId {\n if (!id || typeof id !== 'string') {\n throw new Error('Invalid window ID: must be a non-empty string');\n }\n return id as WindowId;\n}\n\n/**\n * Create an EventName from a string with validation\n * 从字符串创建 EventName (带验证)\n */\nexport function createEventName(name: string): EventName {\n if (!name || typeof name !== 'string') {\n throw new Error('Invalid event name: must be a non-empty string');\n }\n return name as EventName;\n}\n\n/**\n * Create a ChannelName from a string with validation\n * 从字符串创建 ChannelName (带验证)\n */\nexport function createChannelName(name: string): ChannelName {\n if (!name || typeof name !== 'string') {\n throw new Error('Invalid channel name: must be a non-empty string');\n }\n return name as ChannelName;\n}\n\n/**\n * Create a HandlerName from a string with validation\n * 从字符串创建 HandlerName (带验证)\n */\nexport function createHandlerName(name: string): HandlerName {\n if (!name || typeof name !== 'string') {\n throw new Error('Invalid handler name: must be a non-empty string');\n }\n return name as HandlerName;\n}\n\n/**\n * Create a FieldKey from a string with validation\n * 从字符串创建 FieldKey (带验证)\n */\nexport function createFieldKey(key: string): FieldKey {\n if (!key || typeof key !== 'string') {\n throw new Error('Invalid field key: must be a non-empty string');\n }\n return key as FieldKey;\n}\n"],"names":[],"mappings":"aAAA;;;AAGG;AAgCH;;;AAGG;AACG,SAAU,cAAc,CAAC,EAAU,EAAA;IACvC,IAAI,CAAC,EAAE,IAAI,OAAO,EAAE,KAAK,QAAQ,EAAE;AACjC,QAAA,MAAM,IAAI,KAAK,CAAC,+CAA+C,CAAC;IAClE;AACA,IAAA,OAAO,EAAc;AACvB;AAEA;;;AAGG;AACG,SAAU,eAAe,CAAC,IAAY,EAAA;IAC1C,IAAI,CAAC,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE;AACrC,QAAA,MAAM,IAAI,KAAK,CAAC,gDAAgD,CAAC;IACnE;AACA,IAAA,OAAO,IAAiB;AAC1B;AAEA;;;AAGG;AACG,SAAU,iBAAiB,CAAC,IAAY,EAAA;IAC5C,IAAI,CAAC,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE;AACrC,QAAA,MAAM,IAAI,KAAK,CAAC,kDAAkD,CAAC;IACrE;AACA,IAAA,OAAO,IAAmB;AAC5B;AAEA;;;AAGG;AACG,SAAU,iBAAiB,CAAC,IAAY,EAAA;IAC5C,IAAI,CAAC,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE;AACrC,QAAA,MAAM,IAAI,KAAK,CAAC,kDAAkD,CAAC;IACrE;AACA,IAAA,OAAO,IAAmB;AAC5B;AAEA;;;AAGG;AACG,SAAU,cAAc,CAAC,GAAW,EAAA;IACxC,IAAI,CAAC,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE;AACnC,QAAA,MAAM,IAAI,KAAK,CAAC,+CAA+C,CAAC;IAClE;AACA,IAAA,OAAO,GAAe;AACxB"}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Brand Types for Type Safety
|
|
3
|
+
* 品牌类型用于增强类型安全
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* Create a WindowId from a string with validation
|
|
7
|
+
* 从字符串创建 WindowId (带验证)
|
|
8
|
+
*/
|
|
9
|
+
function createWindowId(id) {
|
|
10
|
+
if (!id || typeof id !== 'string') {
|
|
11
|
+
throw new Error('Invalid window ID: must be a non-empty string');
|
|
12
|
+
}
|
|
13
|
+
return id;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Create an EventName from a string with validation
|
|
17
|
+
* 从字符串创建 EventName (带验证)
|
|
18
|
+
*/
|
|
19
|
+
function createEventName(name) {
|
|
20
|
+
if (!name || typeof name !== 'string') {
|
|
21
|
+
throw new Error('Invalid event name: must be a non-empty string');
|
|
22
|
+
}
|
|
23
|
+
return name;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Create a ChannelName from a string with validation
|
|
27
|
+
* 从字符串创建 ChannelName (带验证)
|
|
28
|
+
*/
|
|
29
|
+
function createChannelName(name) {
|
|
30
|
+
if (!name || typeof name !== 'string') {
|
|
31
|
+
throw new Error('Invalid channel name: must be a non-empty string');
|
|
32
|
+
}
|
|
33
|
+
return name;
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Create a HandlerName from a string with validation
|
|
37
|
+
* 从字符串创建 HandlerName (带验证)
|
|
38
|
+
*/
|
|
39
|
+
function createHandlerName(name) {
|
|
40
|
+
if (!name || typeof name !== 'string') {
|
|
41
|
+
throw new Error('Invalid handler name: must be a non-empty string');
|
|
42
|
+
}
|
|
43
|
+
return name;
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Create a FieldKey from a string with validation
|
|
47
|
+
* 从字符串创建 FieldKey (带验证)
|
|
48
|
+
*/
|
|
49
|
+
function createFieldKey(key) {
|
|
50
|
+
if (!key || typeof key !== 'string') {
|
|
51
|
+
throw new Error('Invalid field key: must be a non-empty string');
|
|
52
|
+
}
|
|
53
|
+
return key;
|
|
54
|
+
}export{createChannelName,createEventName,createFieldKey,createHandlerName,createWindowId};//# sourceMappingURL=BrandedTypes.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BrandedTypes.mjs","sources":["../../../src/internal/types/BrandedTypes.ts"],"sourcesContent":["/**\n * Brand Types for Type Safety\n * 品牌类型用于增强类型安全\n */\n\n/**\n * Window ID - Branded string type\n * 窗口 ID - 品牌字符串类型\n */\nexport type WindowId = string & { readonly __brand: 'WindowId' };\n\n/**\n * Event Name - Branded string type\n * 事件名称 - 品牌字符串类型\n */\nexport type EventName = string & { readonly __brand: 'EventName' };\n\n/**\n * Channel Name - Branded string type\n * 频道名称 - 品牌字符串类型\n */\nexport type ChannelName = string & { readonly __brand: 'ChannelName' };\n\n/**\n * Handler Name - Branded string type\n * 处理器名称 - 品牌字符串类型\n */\nexport type HandlerName = string & { readonly __brand: 'HandlerName' };\n\n/**\n * Field Key - Branded string type for MessageBus fields\n * 字段键 - MessageBus 字段的品牌字符串类型\n */\nexport type FieldKey = string & { readonly __brand: 'FieldKey' };\n\n/**\n * Create a WindowId from a string with validation\n * 从字符串创建 WindowId (带验证)\n */\nexport function createWindowId(id: string): WindowId {\n if (!id || typeof id !== 'string') {\n throw new Error('Invalid window ID: must be a non-empty string');\n }\n return id as WindowId;\n}\n\n/**\n * Create an EventName from a string with validation\n * 从字符串创建 EventName (带验证)\n */\nexport function createEventName(name: string): EventName {\n if (!name || typeof name !== 'string') {\n throw new Error('Invalid event name: must be a non-empty string');\n }\n return name as EventName;\n}\n\n/**\n * Create a ChannelName from a string with validation\n * 从字符串创建 ChannelName (带验证)\n */\nexport function createChannelName(name: string): ChannelName {\n if (!name || typeof name !== 'string') {\n throw new Error('Invalid channel name: must be a non-empty string');\n }\n return name as ChannelName;\n}\n\n/**\n * Create a HandlerName from a string with validation\n * 从字符串创建 HandlerName (带验证)\n */\nexport function createHandlerName(name: string): HandlerName {\n if (!name || typeof name !== 'string') {\n throw new Error('Invalid handler name: must be a non-empty string');\n }\n return name as HandlerName;\n}\n\n/**\n * Create a FieldKey from a string with validation\n * 从字符串创建 FieldKey (带验证)\n */\nexport function createFieldKey(key: string): FieldKey {\n if (!key || typeof key !== 'string') {\n throw new Error('Invalid field key: must be a non-empty string');\n }\n return key as FieldKey;\n}\n"],"names":[],"mappings":"AAAA;;;AAGG;AAgCH;;;AAGG;AACG,SAAU,cAAc,CAAC,EAAU,EAAA;IACvC,IAAI,CAAC,EAAE,IAAI,OAAO,EAAE,KAAK,QAAQ,EAAE;AACjC,QAAA,MAAM,IAAI,KAAK,CAAC,+CAA+C,CAAC;IAClE;AACA,IAAA,OAAO,EAAc;AACvB;AAEA;;;AAGG;AACG,SAAU,eAAe,CAAC,IAAY,EAAA;IAC1C,IAAI,CAAC,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE;AACrC,QAAA,MAAM,IAAI,KAAK,CAAC,gDAAgD,CAAC;IACnE;AACA,IAAA,OAAO,IAAiB;AAC1B;AAEA;;;AAGG;AACG,SAAU,iBAAiB,CAAC,IAAY,EAAA;IAC5C,IAAI,CAAC,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE;AACrC,QAAA,MAAM,IAAI,KAAK,CAAC,kDAAkD,CAAC;IACrE;AACA,IAAA,OAAO,IAAmB;AAC5B;AAEA;;;AAGG;AACG,SAAU,iBAAiB,CAAC,IAAY,EAAA;IAC5C,IAAI,CAAC,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE;AACrC,QAAA,MAAM,IAAI,KAAK,CAAC,kDAAkD,CAAC;IACrE;AACA,IAAA,OAAO,IAAmB;AAC5B;AAEA;;;AAGG;AACG,SAAU,cAAc,CAAC,GAAW,EAAA;IACxC,IAAI,CAAC,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE;AACnC,QAAA,MAAM,IAAI,KAAK,CAAC,+CAA+C,CAAC;IAClE;AACA,IAAA,OAAO,GAAe;AACxB"}
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Performance Monitoring Options
|
|
3
|
+
* 性能监控选项
|
|
4
|
+
*/
|
|
5
|
+
export interface StateKeeperOptions {
|
|
6
|
+
/**
|
|
7
|
+
* Delay before saving state to disk (in milliseconds)
|
|
8
|
+
* 保存状态到磁盘前的延迟时间(毫秒)
|
|
9
|
+
* @default 500
|
|
10
|
+
*/
|
|
11
|
+
saveDelay?: number;
|
|
12
|
+
/**
|
|
13
|
+
* Save strategy: 'debounce' or 'throttle'
|
|
14
|
+
* 保存策略:'debounce'(防抖)或 'throttle'(节流)
|
|
15
|
+
* @default 'debounce'
|
|
16
|
+
*/
|
|
17
|
+
saveStrategy?: 'debounce' | 'throttle';
|
|
18
|
+
/**
|
|
19
|
+
* Custom logger instance
|
|
20
|
+
* 自定义日志实例
|
|
21
|
+
*/
|
|
22
|
+
logger?: any;
|
|
23
|
+
/**
|
|
24
|
+
* Custom state file path
|
|
25
|
+
* 自定义状态文件路径
|
|
26
|
+
*/
|
|
27
|
+
stateFilePath?: string;
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* MessageBus Subscription Options
|
|
31
|
+
* MessageBus 订阅选项
|
|
32
|
+
*/
|
|
33
|
+
export interface MessageBusSubscriptionOptions {
|
|
34
|
+
/**
|
|
35
|
+
* Filter function to determine if the update should be processed
|
|
36
|
+
* 过滤函数,用于确定是否应处理更新
|
|
37
|
+
*/
|
|
38
|
+
filter?: (key: string, value: unknown) => boolean;
|
|
39
|
+
/**
|
|
40
|
+
* Specific keys to subscribe to (if not provided, subscribes to all)
|
|
41
|
+
* 要订阅的特定键(如果未提供,则订阅所有)
|
|
42
|
+
*/
|
|
43
|
+
keys?: string[];
|
|
44
|
+
/**
|
|
45
|
+
* Debounce time in milliseconds (0 = no debounce)
|
|
46
|
+
* 防抖时间(毫秒)(0 = 不防抖)
|
|
47
|
+
* @default 0
|
|
48
|
+
*/
|
|
49
|
+
debounce?: number;
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Performance Monitoring Options
|
|
53
|
+
* 性能监控选项
|
|
54
|
+
*/
|
|
55
|
+
export interface PerformanceOptions {
|
|
56
|
+
/**
|
|
57
|
+
* Enable performance monitoring
|
|
58
|
+
* 启用性能监控
|
|
59
|
+
* @default false
|
|
60
|
+
*/
|
|
61
|
+
enabled?: boolean;
|
|
62
|
+
/**
|
|
63
|
+
* Sample rate (0-1, where 1 = 100%)
|
|
64
|
+
* 采样率(0-1,其中 1 = 100%)
|
|
65
|
+
* @default 1
|
|
66
|
+
*/
|
|
67
|
+
sampleRate?: number;
|
|
68
|
+
/**
|
|
69
|
+
* Callback for performance metrics
|
|
70
|
+
* 性能指标回调
|
|
71
|
+
*/
|
|
72
|
+
onMetric?: (metric: PerformanceMetric) => void;
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* Performance Metric
|
|
76
|
+
* 性能指标
|
|
77
|
+
*/
|
|
78
|
+
export interface PerformanceMetric {
|
|
79
|
+
/** Metric name */
|
|
80
|
+
name: string;
|
|
81
|
+
/** Duration in milliseconds */
|
|
82
|
+
duration: number;
|
|
83
|
+
/** Timestamp */
|
|
84
|
+
timestamp: number;
|
|
85
|
+
/** Additional metadata */
|
|
86
|
+
metadata?: Record<string, unknown>;
|
|
87
|
+
}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Branded Types for Type Safety
|
|
3
|
+
* 品牌类型用于增强类型安全
|
|
4
|
+
*
|
|
5
|
+
* These are type-only definitions without runtime logic
|
|
6
|
+
* 这些是纯类型定义,不包含运行时逻辑
|
|
7
|
+
*/
|
|
8
|
+
/**
|
|
9
|
+
* Window ID - Branded string type
|
|
10
|
+
* 窗口 ID - 品牌字符串类型
|
|
11
|
+
*/
|
|
12
|
+
export type WindowId = string & {
|
|
13
|
+
readonly __brand: 'WindowId';
|
|
14
|
+
};
|
|
15
|
+
/**
|
|
16
|
+
* Event Name - Branded string type
|
|
17
|
+
* 事件名称 - 品牌字符串类型
|
|
18
|
+
*/
|
|
19
|
+
export type EventName = string & {
|
|
20
|
+
readonly __brand: 'EventName';
|
|
21
|
+
};
|
|
22
|
+
/**
|
|
23
|
+
* Channel Name - Branded string type
|
|
24
|
+
* 频道名称 - 品牌字符串类型
|
|
25
|
+
*/
|
|
26
|
+
export type ChannelName = string & {
|
|
27
|
+
readonly __brand: 'ChannelName';
|
|
28
|
+
};
|
|
29
|
+
/**
|
|
30
|
+
* Handler Name - Branded string type
|
|
31
|
+
* 处理器名称 - 品牌字符串类型
|
|
32
|
+
*/
|
|
33
|
+
export type HandlerName = string & {
|
|
34
|
+
readonly __brand: 'HandlerName';
|
|
35
|
+
};
|
|
36
|
+
/**
|
|
37
|
+
* Field Key - Branded string type for MessageBus fields
|
|
38
|
+
* 字段键 - MessageBus 字段的品牌字符串类型
|
|
39
|
+
*/
|
|
40
|
+
export type FieldKey = string & {
|
|
41
|
+
readonly __brand: 'FieldKey';
|
|
42
|
+
};
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
import { ILogger } from '@/infrastructure/logger';
|
|
2
|
+
/**
|
|
3
|
+
* Handler Callback Type
|
|
4
|
+
* 处理器回调类型
|
|
5
|
+
*/
|
|
6
|
+
export type HandlerCallback<Context, T = any, R = any> = (context: Context, data: T) => R | Promise<R>;
|
|
7
|
+
/**
|
|
8
|
+
* Message Dispatcher - Generic event/message dispatching utility
|
|
9
|
+
* 消息分发器 - 通用的事件/消息分发工具
|
|
10
|
+
*
|
|
11
|
+
* Unifies the message dispatching logic across different bridges (MessageBus, IpcRouter).
|
|
12
|
+
* 统一不同桥接器(MessageBus, IpcRouter)的消息分发逻辑。
|
|
13
|
+
*
|
|
14
|
+
* @template Context - The context type passed to handlers (传递给处理器的上下文类型)
|
|
15
|
+
*/
|
|
16
|
+
export declare class MessageDispatcher<Context = any> {
|
|
17
|
+
private handlers;
|
|
18
|
+
private logger;
|
|
19
|
+
private errorHandler?;
|
|
20
|
+
constructor(name: string, logger?: ILogger, errorHandler?: (error: any, name: string) => any);
|
|
21
|
+
/**
|
|
22
|
+
* Register a handler
|
|
23
|
+
* 注册处理器
|
|
24
|
+
* @param name - Handler name (处理器名称)
|
|
25
|
+
* @param handler - Handler function (处理函数)
|
|
26
|
+
* @param metadata - Optional metadata (e.g., validation schema)
|
|
27
|
+
*/
|
|
28
|
+
register<T = any, R = any>(name: string, handler: HandlerCallback<Context, T, R>, metadata?: any): void;
|
|
29
|
+
/**
|
|
30
|
+
* Unregister a handler
|
|
31
|
+
* 注销处理器
|
|
32
|
+
* @param name - Handler name (处理器名称)
|
|
33
|
+
* @returns True if removed (如果移除成功返回 true)
|
|
34
|
+
*/
|
|
35
|
+
unregister(name: string): boolean;
|
|
36
|
+
/**
|
|
37
|
+
* Get handler metadata
|
|
38
|
+
* 获取处理器元数据
|
|
39
|
+
*/
|
|
40
|
+
getMetadata(name: string): any | undefined;
|
|
41
|
+
/**
|
|
42
|
+
* Dispatch a message to a handler
|
|
43
|
+
* 分发消息给处理器
|
|
44
|
+
* @param name - Handler name (处理器名称)
|
|
45
|
+
* @param context - Context to pass to handler (传递给处理器的上下文)
|
|
46
|
+
* @param data - Data to pass to handler (传递给处理器的数据)
|
|
47
|
+
* @returns Handler result (处理器结果)
|
|
48
|
+
* @throws Error if handler execution fails (如果处理器执行失败抛出错误)
|
|
49
|
+
*/
|
|
50
|
+
dispatch<T = any, R = any>(name: string, context: Context, data: T): R | undefined;
|
|
51
|
+
/**
|
|
52
|
+
* Check if handler exists
|
|
53
|
+
* 检查处理器是否存在
|
|
54
|
+
* @param name - Handler name (处理器名称)
|
|
55
|
+
*/
|
|
56
|
+
has(name: string): boolean;
|
|
57
|
+
/**
|
|
58
|
+
* Get all registered handler names
|
|
59
|
+
* 获取所有注册的处理器名称
|
|
60
|
+
*/
|
|
61
|
+
getHandlerNames(): string[];
|
|
62
|
+
/**
|
|
63
|
+
* Clear all handlers
|
|
64
|
+
* 清空所有处理器
|
|
65
|
+
*/
|
|
66
|
+
clear(): void;
|
|
67
|
+
}
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
'use strict';var ElectronLogger=require('../../infrastructure/logger/ElectronLogger.js');/**
|
|
2
|
+
* Message Dispatcher - Generic event/message dispatching utility
|
|
3
|
+
* 消息分发器 - 通用的事件/消息分发工具
|
|
4
|
+
*
|
|
5
|
+
* Unifies the message dispatching logic across different bridges (MessageBus, IpcRouter).
|
|
6
|
+
* 统一不同桥接器(MessageBus, IpcRouter)的消息分发逻辑。
|
|
7
|
+
*
|
|
8
|
+
* @template Context - The context type passed to handlers (传递给处理器的上下文类型)
|
|
9
|
+
*/
|
|
10
|
+
class MessageDispatcher {
|
|
11
|
+
// Store handler along with optional metadata (like validation schema)
|
|
12
|
+
handlers = new Map();
|
|
13
|
+
logger;
|
|
14
|
+
errorHandler;
|
|
15
|
+
constructor(name, logger, errorHandler) {
|
|
16
|
+
this.logger = logger || new ElectronLogger.ElectronLogger({ appName: name });
|
|
17
|
+
this.errorHandler = errorHandler;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Register a handler
|
|
21
|
+
* 注册处理器
|
|
22
|
+
* @param name - Handler name (处理器名称)
|
|
23
|
+
* @param handler - Handler function (处理函数)
|
|
24
|
+
* @param metadata - Optional metadata (e.g., validation schema)
|
|
25
|
+
*/
|
|
26
|
+
register(name, handler, metadata) {
|
|
27
|
+
if (this.handlers.has(name)) {
|
|
28
|
+
this.logger.warn(`Handler "${name}" is being overwritten / 处理器 "${name}" 被覆盖`);
|
|
29
|
+
}
|
|
30
|
+
this.handlers.set(name, { callback: handler, metadata });
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Unregister a handler
|
|
34
|
+
* 注销处理器
|
|
35
|
+
* @param name - Handler name (处理器名称)
|
|
36
|
+
* @returns True if removed (如果移除成功返回 true)
|
|
37
|
+
*/
|
|
38
|
+
unregister(name) {
|
|
39
|
+
return this.handlers.delete(name);
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Get handler metadata
|
|
43
|
+
* 获取处理器元数据
|
|
44
|
+
*/
|
|
45
|
+
getMetadata(name) {
|
|
46
|
+
return this.handlers.get(name)?.metadata;
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Dispatch a message to a handler
|
|
50
|
+
* 分发消息给处理器
|
|
51
|
+
* @param name - Handler name (处理器名称)
|
|
52
|
+
* @param context - Context to pass to handler (传递给处理器的上下文)
|
|
53
|
+
* @param data - Data to pass to handler (传递给处理器的数据)
|
|
54
|
+
* @returns Handler result (处理器结果)
|
|
55
|
+
* @throws Error if handler execution fails (如果处理器执行失败抛出错误)
|
|
56
|
+
*/
|
|
57
|
+
dispatch(name, context, data) {
|
|
58
|
+
const entry = this.handlers.get(name);
|
|
59
|
+
if (!entry) {
|
|
60
|
+
this.logger.warn(`No handler found for "${name}" / 未找到处理器 "${name}"`);
|
|
61
|
+
return undefined;
|
|
62
|
+
}
|
|
63
|
+
try {
|
|
64
|
+
return entry.callback(context, data);
|
|
65
|
+
}
|
|
66
|
+
catch (error) {
|
|
67
|
+
this.logger.error(`Error in handler "${name}": ${error} / 处理器 "${name}" 执行错误: ${error}`);
|
|
68
|
+
if (this.errorHandler) {
|
|
69
|
+
return this.errorHandler(error, name);
|
|
70
|
+
}
|
|
71
|
+
throw error;
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* Check if handler exists
|
|
76
|
+
* 检查处理器是否存在
|
|
77
|
+
* @param name - Handler name (处理器名称)
|
|
78
|
+
*/
|
|
79
|
+
has(name) {
|
|
80
|
+
return this.handlers.has(name);
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* Get all registered handler names
|
|
84
|
+
* 获取所有注册的处理器名称
|
|
85
|
+
*/
|
|
86
|
+
getHandlerNames() {
|
|
87
|
+
return Array.from(this.handlers.keys());
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* Clear all handlers
|
|
91
|
+
* 清空所有处理器
|
|
92
|
+
*/
|
|
93
|
+
clear() {
|
|
94
|
+
this.handlers.clear();
|
|
95
|
+
}
|
|
96
|
+
}exports.MessageDispatcher=MessageDispatcher;//# sourceMappingURL=MessageDispatcher.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MessageDispatcher.js","sources":["../../../src/internal/utils/MessageDispatcher.ts"],"sourcesContent":["import { Logger, ILogger } from '@/infrastructure/logger';\n\n/**\n * Handler Callback Type\n * 处理器回调类型\n */\nexport type HandlerCallback<Context, T = any, R = any> = (\n context: Context,\n data: T\n) => R | Promise<R>;\n\n/**\n * Message Dispatcher - Generic event/message dispatching utility\n * 消息分发器 - 通用的事件/消息分发工具\n *\n * Unifies the message dispatching logic across different bridges (MessageBus, IpcRouter).\n * 统一不同桥接器(MessageBus, IpcRouter)的消息分发逻辑。\n *\n * @template Context - The context type passed to handlers (传递给处理器的上下文类型)\n */\nexport class MessageDispatcher<Context = any> {\n // Store handler along with optional metadata (like validation schema)\n private handlers = new Map<\n string,\n {\n callback: HandlerCallback<Context, any, any>;\n metadata?: any;\n }\n >();\n private logger: ILogger;\n private errorHandler?: (error: any, name: string) => any;\n\n constructor(name: string, logger?: ILogger, errorHandler?: (error: any, name: string) => any) {\n this.logger = logger || new Logger({ appName: name });\n this.errorHandler = errorHandler;\n }\n\n /**\n * Register a handler\n * 注册处理器\n * @param name - Handler name (处理器名称)\n * @param handler - Handler function (处理函数)\n * @param metadata - Optional metadata (e.g., validation schema)\n */\n register<T = any, R = any>(\n name: string,\n handler: HandlerCallback<Context, T, R>,\n metadata?: any\n ): void {\n if (this.handlers.has(name)) {\n this.logger.warn(`Handler \"${name}\" is being overwritten / 处理器 \"${name}\" 被覆盖`);\n }\n this.handlers.set(name, { callback: handler, metadata });\n }\n\n /**\n * Unregister a handler\n * 注销处理器\n * @param name - Handler name (处理器名称)\n * @returns True if removed (如果移除成功返回 true)\n */\n unregister(name: string): boolean {\n return this.handlers.delete(name);\n }\n\n /**\n * Get handler metadata\n * 获取处理器元数据\n */\n getMetadata(name: string): any | undefined {\n return this.handlers.get(name)?.metadata;\n }\n\n /**\n * Dispatch a message to a handler\n * 分发消息给处理器\n * @param name - Handler name (处理器名称)\n * @param context - Context to pass to handler (传递给处理器的上下文)\n * @param data - Data to pass to handler (传递给处理器的数据)\n * @returns Handler result (处理器结果)\n * @throws Error if handler execution fails (如果处理器执行失败抛出错误)\n */\n dispatch<T = any, R = any>(name: string, context: Context, data: T): R | undefined {\n const entry = this.handlers.get(name);\n if (!entry) {\n this.logger.warn(`No handler found for \"${name}\" / 未找到处理器 \"${name}\"`);\n return undefined;\n }\n\n try {\n return entry.callback(context, data);\n } catch (error) {\n this.logger.error(\n `Error in handler \"${name}\": ${error} / 处理器 \"${name}\" 执行错误: ${error}`\n );\n if (this.errorHandler) {\n return this.errorHandler(error, name);\n }\n throw error;\n }\n }\n\n /**\n * Check if handler exists\n * 检查处理器是否存在\n * @param name - Handler name (处理器名称)\n */\n has(name: string): boolean {\n return this.handlers.has(name);\n }\n\n /**\n * Get all registered handler names\n * 获取所有注册的处理器名称\n */\n getHandlerNames(): string[] {\n return Array.from(this.handlers.keys());\n }\n\n /**\n * Clear all handlers\n * 清空所有处理器\n */\n clear(): void {\n this.handlers.clear();\n }\n}\n"],"names":["Logger"],"mappings":"yFAWA;;;;;;;;AAQG;MACU,iBAAiB,CAAA;;AAEpB,IAAA,QAAQ,GAAG,IAAI,GAAG,EAMvB;AACK,IAAA,MAAM;AACN,IAAA,YAAY;AAEpB,IAAA,WAAA,CAAY,IAAY,EAAE,MAAgB,EAAE,YAAgD,EAAA;AAC1F,QAAA,IAAI,CAAC,MAAM,GAAG,MAAM,IAAI,IAAIA,6BAAM,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;AACrD,QAAA,IAAI,CAAC,YAAY,GAAG,YAAY;IAClC;AAEA;;;;;;AAMG;AACH,IAAA,QAAQ,CACN,IAAY,EACZ,OAAuC,EACvC,QAAc,EAAA;QAEd,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;YAC3B,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA,SAAA,EAAY,IAAI,CAAA,8BAAA,EAAiC,IAAI,CAAA,KAAA,CAAO,CAAC;QAChF;AACA,QAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC;IAC1D;AAEA;;;;;AAKG;AACH,IAAA,UAAU,CAAC,IAAY,EAAA;QACrB,OAAO,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC;IACnC;AAEA;;;AAGG;AACH,IAAA,WAAW,CAAC,IAAY,EAAA;QACtB,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,QAAQ;IAC1C;AAEA;;;;;;;;AAQG;AACH,IAAA,QAAQ,CAAmB,IAAY,EAAE,OAAgB,EAAE,IAAO,EAAA;QAChE,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC;QACrC,IAAI,CAAC,KAAK,EAAE;YACV,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA,sBAAA,EAAyB,IAAI,CAAA,YAAA,EAAe,IAAI,CAAA,CAAA,CAAG,CAAC;AACrE,YAAA,OAAO,SAAS;QAClB;AAEA,QAAA,IAAI;YACF,OAAO,KAAK,CAAC,QAAQ,CAAC,OAAO,EAAE,IAAI,CAAC;QACtC;QAAE,OAAO,KAAK,EAAE;AACd,YAAA,IAAI,CAAC,MAAM,CAAC,KAAK,CACf,CAAA,kBAAA,EAAqB,IAAI,CAAA,GAAA,EAAM,KAAK,WAAW,IAAI,CAAA,QAAA,EAAW,KAAK,CAAA,CAAE,CACtE;AACD,YAAA,IAAI,IAAI,CAAC,YAAY,EAAE;gBACrB,OAAO,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,IAAI,CAAC;YACvC;AACA,YAAA,MAAM,KAAK;QACb;IACF;AAEA;;;;AAIG;AACH,IAAA,GAAG,CAAC,IAAY,EAAA;QACd,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC;IAChC;AAEA;;;AAGG;IACH,eAAe,GAAA;QACb,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;IACzC;AAEA;;;AAGG;IACH,KAAK,GAAA;AACH,QAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE;IACvB;AACD"}
|