@zhin.js/core 1.0.0 → 1.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (121) hide show
  1. package/CHANGELOG.md +9 -0
  2. package/LICENSE +21 -0
  3. package/README.md +295 -74
  4. package/lib/adapter.d.ts +39 -0
  5. package/lib/adapter.d.ts.map +1 -0
  6. package/{dist → lib}/adapter.js +20 -2
  7. package/lib/adapter.js.map +1 -0
  8. package/lib/app.d.ts +115 -0
  9. package/lib/app.d.ts.map +1 -0
  10. package/{dist → lib}/app.js +148 -78
  11. package/lib/app.js.map +1 -0
  12. package/lib/bot.d.ts +31 -0
  13. package/lib/bot.d.ts.map +1 -0
  14. package/lib/command.d.ts +32 -0
  15. package/lib/command.d.ts.map +1 -0
  16. package/lib/command.js +46 -0
  17. package/lib/command.js.map +1 -0
  18. package/lib/component.d.ts +107 -0
  19. package/lib/component.d.ts.map +1 -0
  20. package/lib/component.js +273 -0
  21. package/lib/component.js.map +1 -0
  22. package/{dist → lib}/config.d.ts.map +1 -1
  23. package/{dist → lib}/config.js +6 -9
  24. package/lib/config.js.map +1 -0
  25. package/lib/cron.d.ts +81 -0
  26. package/lib/cron.d.ts.map +1 -0
  27. package/lib/cron.js +159 -0
  28. package/lib/cron.js.map +1 -0
  29. package/lib/errors.d.ts +165 -0
  30. package/lib/errors.d.ts.map +1 -0
  31. package/lib/errors.js +306 -0
  32. package/lib/errors.js.map +1 -0
  33. package/lib/index.d.ts +15 -0
  34. package/lib/index.d.ts.map +1 -0
  35. package/lib/index.js +17 -0
  36. package/lib/index.js.map +1 -0
  37. package/lib/message.d.ts +44 -0
  38. package/lib/message.d.ts.map +1 -0
  39. package/lib/message.js +11 -0
  40. package/lib/message.js.map +1 -0
  41. package/lib/plugin.d.ts +50 -0
  42. package/lib/plugin.d.ts.map +1 -0
  43. package/lib/plugin.js +170 -0
  44. package/lib/plugin.js.map +1 -0
  45. package/lib/prompt.d.ts +116 -0
  46. package/lib/prompt.d.ts.map +1 -0
  47. package/lib/prompt.js +240 -0
  48. package/lib/prompt.js.map +1 -0
  49. package/lib/schema.d.ts +83 -0
  50. package/lib/schema.d.ts.map +1 -0
  51. package/lib/schema.js +245 -0
  52. package/lib/schema.js.map +1 -0
  53. package/{dist → lib}/types-generator.d.ts.map +1 -1
  54. package/{dist → lib}/types-generator.js +6 -3
  55. package/lib/types-generator.js.map +1 -0
  56. package/lib/types.d.ts +119 -0
  57. package/lib/types.d.ts.map +1 -0
  58. package/lib/utils.d.ts +52 -0
  59. package/lib/utils.d.ts.map +1 -0
  60. package/lib/utils.js +338 -0
  61. package/lib/utils.js.map +1 -0
  62. package/package.json +15 -9
  63. package/src/adapter.ts +25 -9
  64. package/src/app.ts +363 -258
  65. package/src/bot.ts +29 -8
  66. package/src/command.ts +50 -0
  67. package/src/component.ts +318 -0
  68. package/src/config.ts +9 -12
  69. package/src/cron.ts +176 -0
  70. package/src/errors.ts +365 -0
  71. package/src/index.ts +16 -13
  72. package/src/message.ts +44 -0
  73. package/src/plugin.ts +148 -66
  74. package/src/prompt.ts +290 -0
  75. package/src/schema.ts +273 -0
  76. package/src/types-generator.ts +7 -3
  77. package/src/types.ts +77 -30
  78. package/src/utils.ts +312 -0
  79. package/tests/adapter.test.ts +36 -22
  80. package/tests/app.test.ts +30 -0
  81. package/tests/command.test.ts +545 -0
  82. package/tests/component.test.ts +656 -0
  83. package/tests/config.test.ts +1 -1
  84. package/tests/errors.test.ts +311 -0
  85. package/tests/message.test.ts +402 -0
  86. package/tests/plugin.test.ts +275 -143
  87. package/tests/utils.test.ts +80 -0
  88. package/tsconfig.json +3 -4
  89. package/dist/adapter.d.ts +0 -22
  90. package/dist/adapter.d.ts.map +0 -1
  91. package/dist/adapter.js.map +0 -1
  92. package/dist/app.d.ts +0 -69
  93. package/dist/app.d.ts.map +0 -1
  94. package/dist/app.js.map +0 -1
  95. package/dist/bot.d.ts +0 -9
  96. package/dist/bot.d.ts.map +0 -1
  97. package/dist/config.js.map +0 -1
  98. package/dist/index.d.ts +0 -9
  99. package/dist/index.d.ts.map +0 -1
  100. package/dist/index.js +0 -12
  101. package/dist/index.js.map +0 -1
  102. package/dist/logger.d.ts +0 -3
  103. package/dist/logger.d.ts.map +0 -1
  104. package/dist/logger.js +0 -3
  105. package/dist/logger.js.map +0 -1
  106. package/dist/plugin.d.ts +0 -41
  107. package/dist/plugin.d.ts.map +0 -1
  108. package/dist/plugin.js +0 -95
  109. package/dist/plugin.js.map +0 -1
  110. package/dist/types-generator.js.map +0 -1
  111. package/dist/types.d.ts +0 -69
  112. package/dist/types.d.ts.map +0 -1
  113. package/src/logger.ts +0 -3
  114. package/tests/logger.test.ts +0 -170
  115. package/tsconfig.tsbuildinfo +0 -1
  116. /package/{dist → lib}/bot.js +0 -0
  117. /package/{dist → lib}/bot.js.map +0 -0
  118. /package/{dist → lib}/config.d.ts +0 -0
  119. /package/{dist → lib}/types-generator.d.ts +0 -0
  120. /package/{dist → lib}/types.js +0 -0
  121. /package/{dist → lib}/types.js.map +0 -0
package/lib/cron.js ADDED
@@ -0,0 +1,159 @@
1
+ import { CronExpressionParser } from 'cron-parser';
2
+ /**
3
+ * Cron 定时任务类
4
+ * 基于 cron-parser 实现的定时任务调度器
5
+ */
6
+ export class Cron {
7
+ expression;
8
+ callback;
9
+ timeoutId;
10
+ isRunning = false;
11
+ isDisposed = false;
12
+ /**
13
+ * 创建一个新的 Cron 实例
14
+ * @param cronExpression - Cron 表达式 (例如: '0 0 * * *' 表示每天午夜执行)
15
+ * @param callback - 要执行的回调函数
16
+ */
17
+ constructor(cronExpression, callback) {
18
+ try {
19
+ this.expression = CronExpressionParser.parse(cronExpression);
20
+ this.callback = callback;
21
+ }
22
+ catch (error) {
23
+ throw new Error(`Invalid cron expression "${cronExpression}": ${error.message}`);
24
+ }
25
+ }
26
+ /**
27
+ * 启动定时任务
28
+ */
29
+ run() {
30
+ if (this.isDisposed) {
31
+ throw new Error('Cannot run a disposed cron job');
32
+ }
33
+ if (this.isRunning) {
34
+ return; // 已经在运行中
35
+ }
36
+ this.isRunning = true;
37
+ this.scheduleNext();
38
+ }
39
+ /**
40
+ * 停止定时任务
41
+ */
42
+ stop() {
43
+ if (this.timeoutId) {
44
+ clearTimeout(this.timeoutId);
45
+ this.timeoutId = undefined;
46
+ }
47
+ this.isRunning = false;
48
+ }
49
+ /**
50
+ * 销毁定时任务,释放资源
51
+ */
52
+ dispose() {
53
+ this.stop();
54
+ this.isDisposed = true;
55
+ }
56
+ /**
57
+ * 获取下一次执行时间
58
+ */
59
+ getNextExecutionTime() {
60
+ if (this.isDisposed) {
61
+ throw new Error('Cannot get next execution time for a disposed cron job');
62
+ }
63
+ // 重置表达式到当前时间
64
+ this.expression.reset();
65
+ return this.expression.next().toDate();
66
+ }
67
+ /**
68
+ * 检查任务是否正在运行
69
+ */
70
+ get running() {
71
+ return this.isRunning;
72
+ }
73
+ /**
74
+ * 检查任务是否已被销毁
75
+ */
76
+ get disposed() {
77
+ return this.isDisposed;
78
+ }
79
+ /**
80
+ * 获取原始的 cron 表达式字符串
81
+ */
82
+ get cronExpression() {
83
+ return this.expression.stringify();
84
+ }
85
+ /**
86
+ * 调度下一次执行
87
+ */
88
+ scheduleNext() {
89
+ if (!this.isRunning || this.isDisposed) {
90
+ return;
91
+ }
92
+ try {
93
+ // 重置到当前时间并获取下一次执行时间
94
+ this.expression.reset();
95
+ const nextDate = this.expression.next().toDate();
96
+ const now = new Date();
97
+ const delay = nextDate.getTime() - now.getTime();
98
+ // 如果延迟时间为负数或0,说明应该立即执行
99
+ if (delay <= 0) {
100
+ this.executeCallback();
101
+ return;
102
+ }
103
+ // 设置定时器
104
+ this.timeoutId = setTimeout(() => {
105
+ this.executeCallback();
106
+ }, delay);
107
+ }
108
+ catch (error) {
109
+ console.error(`Error scheduling next cron execution: ${error.message}`);
110
+ // 如果出错,停止任务
111
+ this.stop();
112
+ }
113
+ }
114
+ /**
115
+ * 执行回调函数并调度下一次执行
116
+ */
117
+ async executeCallback() {
118
+ if (!this.isRunning || this.isDisposed) {
119
+ return;
120
+ }
121
+ try {
122
+ // 执行回调函数
123
+ await this.callback();
124
+ }
125
+ catch (error) {
126
+ console.error(`Error executing cron callback: ${error.message}`);
127
+ }
128
+ // 调度下一次执行
129
+ this.scheduleNext();
130
+ }
131
+ }
132
+ /**
133
+ * Cron 表达式格式说明:
134
+ *
135
+ * 标准格式: "秒 分 时 日 月 周"
136
+ *
137
+ * 字段说明:
138
+ * - 秒: 0-59
139
+ * - 分: 0-59
140
+ * - 时: 0-23
141
+ * - 日: 1-31
142
+ * - 月: 1-12 (或 JAN-DEC)
143
+ * - 周: 0-7 (0和7都表示周日,或 SUN-SAT)
144
+ *
145
+ * 特殊字符:
146
+ * - 星号: 匹配任意值
147
+ * - 问号: 用于日和周字段,表示不指定值
148
+ * - 横线: 表示范围,如 1-5
149
+ * - 逗号: 表示列表,如 1,3,5
150
+ * - 斜杠: 表示步长,如 0/15 表示每15分钟
151
+ *
152
+ * 常用示例:
153
+ * - "0 0 0 * * *": 每天午夜执行
154
+ * - "0 0/15 * * * *": 每15分钟执行
155
+ * - "0 0 12 * * *": 每天中午12点执行
156
+ * - "0 0 0 1 * *": 每月1号午夜执行
157
+ * - "0 0 0 * * 0": 每周日午夜执行
158
+ */
159
+ //# sourceMappingURL=cron.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cron.js","sourceRoot":"","sources":["../src/cron.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,165 @@
1
+ /**
2
+ * 基础错误类,所有自定义错误都应该继承此类
3
+ */
4
+ export declare class ZhinError extends Error {
5
+ readonly code: string;
6
+ readonly timestamp: Date;
7
+ readonly context?: Record<string, any>;
8
+ constructor(message: string, code?: string, context?: Record<string, any>);
9
+ /**
10
+ * 转换为JSON格式
11
+ */
12
+ toJSON(): {
13
+ name: string;
14
+ message: string;
15
+ code: string;
16
+ timestamp: string;
17
+ context: Record<string, any> | undefined;
18
+ stack: string | undefined;
19
+ };
20
+ /**
21
+ * 转换为用户友好的格式
22
+ */
23
+ toUserString(): string;
24
+ }
25
+ /**
26
+ * 配置相关错误
27
+ */
28
+ export declare class ConfigError extends ZhinError {
29
+ constructor(message: string, context?: Record<string, any>);
30
+ }
31
+ /**
32
+ * 插件相关错误
33
+ */
34
+ export declare class PluginError extends ZhinError {
35
+ readonly pluginName: string;
36
+ constructor(message: string, pluginName: string, context?: Record<string, any>);
37
+ }
38
+ /**
39
+ * 适配器相关错误
40
+ */
41
+ export declare class AdapterError extends ZhinError {
42
+ readonly adapterName: string;
43
+ readonly botName?: string;
44
+ constructor(message: string, adapterName: string, botName?: string, context?: Record<string, any>);
45
+ }
46
+ /**
47
+ * 连接相关错误
48
+ */
49
+ export declare class ConnectionError extends ZhinError {
50
+ readonly retryable: boolean;
51
+ constructor(message: string, retryable?: boolean, context?: Record<string, any>);
52
+ }
53
+ /**
54
+ * 消息处理错误
55
+ */
56
+ export declare class MessageError extends ZhinError {
57
+ readonly messageId?: string;
58
+ readonly channelId?: string;
59
+ constructor(message: string, messageId?: string, channelId?: string, context?: Record<string, any>);
60
+ }
61
+ /**
62
+ * 上下文相关错误
63
+ */
64
+ export declare class ContextError extends ZhinError {
65
+ readonly contextName: string;
66
+ constructor(message: string, contextName: string, context?: Record<string, any>);
67
+ }
68
+ /**
69
+ * 验证错误
70
+ */
71
+ export declare class ValidationError extends ZhinError {
72
+ readonly field?: string;
73
+ readonly value?: any;
74
+ constructor(message: string, field?: string, value?: any, context?: Record<string, any>);
75
+ }
76
+ /**
77
+ * 权限错误
78
+ */
79
+ export declare class PermissionError extends ZhinError {
80
+ readonly userId?: string;
81
+ readonly requiredPermission?: string;
82
+ constructor(message: string, userId?: string, requiredPermission?: string, context?: Record<string, any>);
83
+ }
84
+ /**
85
+ * 超时错误
86
+ */
87
+ export declare class TimeoutError extends ZhinError {
88
+ readonly timeoutMs: number;
89
+ constructor(message: string, timeoutMs: number, context?: Record<string, any>);
90
+ }
91
+ /**
92
+ * 错误处理器接口
93
+ */
94
+ export interface ErrorHandler {
95
+ (error: Error, context?: Record<string, any>): void | Promise<void>;
96
+ }
97
+ /**
98
+ * 错误管理器
99
+ */
100
+ export declare class ErrorManager {
101
+ private handlers;
102
+ private globalHandlers;
103
+ /**
104
+ * 注册错误处理器
105
+ */
106
+ register(errorType: string, handler: ErrorHandler): void;
107
+ /**
108
+ * 注册全局错误处理器
109
+ */
110
+ registerGlobal(handler: ErrorHandler): void;
111
+ /**
112
+ * 处理错误
113
+ */
114
+ handle(error: Error, context?: Record<string, any>): Promise<void>;
115
+ /**
116
+ * 移除错误处理器
117
+ */
118
+ unregister(errorType: string, handler: ErrorHandler): boolean;
119
+ /**
120
+ * 清理所有处理器
121
+ */
122
+ clear(): void;
123
+ }
124
+ /**
125
+ * 错误重试工具
126
+ */
127
+ export declare class RetryManager {
128
+ /**
129
+ * 执行重试逻辑
130
+ */
131
+ static retry<T>(fn: () => Promise<T>, options?: {
132
+ maxRetries?: number;
133
+ delay?: number;
134
+ exponentialBackoff?: boolean;
135
+ retryCondition?: (error: Error) => boolean;
136
+ }): Promise<T>;
137
+ }
138
+ /**
139
+ * 断路器模式实现
140
+ */
141
+ export declare class CircuitBreaker {
142
+ private failureThreshold;
143
+ private timeoutMs;
144
+ private monitoringPeriodMs;
145
+ private failures;
146
+ private lastFailureTime;
147
+ private state;
148
+ constructor(failureThreshold?: number, timeoutMs?: number, monitoringPeriodMs?: number);
149
+ /**
150
+ * 执行受保护的操作
151
+ */
152
+ execute<T>(fn: () => Promise<T>): Promise<T>;
153
+ private onSuccess;
154
+ private onFailure;
155
+ /**
156
+ * 获取断路器状态
157
+ */
158
+ getState(): 'CLOSED' | 'OPEN' | 'HALF_OPEN';
159
+ /**
160
+ * 重置断路器
161
+ */
162
+ reset(): void;
163
+ }
164
+ export declare const errorManager: ErrorManager;
165
+ //# sourceMappingURL=errors.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"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"}
package/lib/errors.js ADDED
@@ -0,0 +1,306 @@
1
+ // ============================================================================
2
+ // 错误处理系统
3
+ // ============================================================================
4
+ /**
5
+ * 基础错误类,所有自定义错误都应该继承此类
6
+ */
7
+ export class ZhinError extends Error {
8
+ code;
9
+ timestamp;
10
+ context;
11
+ constructor(message, code = 'ZHIN_ERROR', context) {
12
+ super(message);
13
+ this.name = this.constructor.name;
14
+ this.code = code;
15
+ this.timestamp = new Date();
16
+ this.context = context;
17
+ // 确保错误堆栈正确显示
18
+ if (Error.captureStackTrace) {
19
+ Error.captureStackTrace(this, this.constructor);
20
+ }
21
+ }
22
+ /**
23
+ * 转换为JSON格式
24
+ */
25
+ toJSON() {
26
+ return {
27
+ name: this.name,
28
+ message: this.message,
29
+ code: this.code,
30
+ timestamp: this.timestamp.toISOString(),
31
+ context: this.context,
32
+ stack: this.stack
33
+ };
34
+ }
35
+ /**
36
+ * 转换为用户友好的格式
37
+ */
38
+ toUserString() {
39
+ return `[${this.code}] ${this.message}`;
40
+ }
41
+ }
42
+ /**
43
+ * 配置相关错误
44
+ */
45
+ export class ConfigError extends ZhinError {
46
+ constructor(message, context) {
47
+ super(message, 'CONFIG_ERROR', context);
48
+ }
49
+ }
50
+ /**
51
+ * 插件相关错误
52
+ */
53
+ export class PluginError extends ZhinError {
54
+ pluginName;
55
+ constructor(message, pluginName, context) {
56
+ super(message, 'PLUGIN_ERROR', { ...context, pluginName });
57
+ this.pluginName = pluginName;
58
+ }
59
+ }
60
+ /**
61
+ * 适配器相关错误
62
+ */
63
+ export class AdapterError extends ZhinError {
64
+ adapterName;
65
+ botName;
66
+ constructor(message, adapterName, botName, context) {
67
+ super(message, 'ADAPTER_ERROR', { ...context, adapterName, botName });
68
+ this.adapterName = adapterName;
69
+ this.botName = botName;
70
+ }
71
+ }
72
+ /**
73
+ * 连接相关错误
74
+ */
75
+ export class ConnectionError extends ZhinError {
76
+ retryable;
77
+ constructor(message, retryable = true, context) {
78
+ super(message, 'CONNECTION_ERROR', { ...context, retryable });
79
+ this.retryable = retryable;
80
+ }
81
+ }
82
+ /**
83
+ * 消息处理错误
84
+ */
85
+ export class MessageError extends ZhinError {
86
+ messageId;
87
+ channelId;
88
+ constructor(message, messageId, channelId, context) {
89
+ super(message, 'MESSAGE_ERROR', { ...context, messageId, channelId });
90
+ this.messageId = messageId;
91
+ this.channelId = channelId;
92
+ }
93
+ }
94
+ /**
95
+ * 上下文相关错误
96
+ */
97
+ export class ContextError extends ZhinError {
98
+ contextName;
99
+ constructor(message, contextName, context) {
100
+ super(message, 'CONTEXT_ERROR', { ...context, contextName });
101
+ this.contextName = contextName;
102
+ }
103
+ }
104
+ /**
105
+ * 验证错误
106
+ */
107
+ export class ValidationError extends ZhinError {
108
+ field;
109
+ value;
110
+ constructor(message, field, value, context) {
111
+ super(message, 'VALIDATION_ERROR', { ...context, field, value });
112
+ this.field = field;
113
+ this.value = value;
114
+ }
115
+ }
116
+ /**
117
+ * 权限错误
118
+ */
119
+ export class PermissionError extends ZhinError {
120
+ userId;
121
+ requiredPermission;
122
+ constructor(message, userId, requiredPermission, context) {
123
+ super(message, 'PERMISSION_ERROR', { ...context, userId, requiredPermission });
124
+ this.userId = userId;
125
+ this.requiredPermission = requiredPermission;
126
+ }
127
+ }
128
+ /**
129
+ * 超时错误
130
+ */
131
+ export class TimeoutError extends ZhinError {
132
+ timeoutMs;
133
+ constructor(message, timeoutMs, context) {
134
+ super(message, 'TIMEOUT_ERROR', { ...context, timeoutMs });
135
+ this.timeoutMs = timeoutMs;
136
+ }
137
+ }
138
+ /**
139
+ * 错误管理器
140
+ */
141
+ export class ErrorManager {
142
+ handlers = new Map();
143
+ globalHandlers = [];
144
+ /**
145
+ * 注册错误处理器
146
+ */
147
+ register(errorType, handler) {
148
+ if (!this.handlers.has(errorType)) {
149
+ this.handlers.set(errorType, []);
150
+ }
151
+ this.handlers.get(errorType).push(handler);
152
+ }
153
+ /**
154
+ * 注册全局错误处理器
155
+ */
156
+ registerGlobal(handler) {
157
+ this.globalHandlers.push(handler);
158
+ }
159
+ /**
160
+ * 处理错误
161
+ */
162
+ async handle(error, context) {
163
+ // 首先调用全局处理器
164
+ for (const handler of this.globalHandlers) {
165
+ try {
166
+ await handler(error, context);
167
+ }
168
+ catch (handlerError) {
169
+ // console.error 已替换为注释
170
+ }
171
+ }
172
+ // 然后调用特定类型的处理器
173
+ const errorType = error.constructor.name;
174
+ const handlers = this.handlers.get(errorType) || [];
175
+ for (const handler of handlers) {
176
+ try {
177
+ await handler(error, context);
178
+ }
179
+ catch (handlerError) {
180
+ // console.error 已替换为注释
181
+ }
182
+ }
183
+ }
184
+ /**
185
+ * 移除错误处理器
186
+ */
187
+ unregister(errorType, handler) {
188
+ const handlers = this.handlers.get(errorType);
189
+ if (handlers) {
190
+ const index = handlers.indexOf(handler);
191
+ if (index !== -1) {
192
+ handlers.splice(index, 1);
193
+ return true;
194
+ }
195
+ }
196
+ return false;
197
+ }
198
+ /**
199
+ * 清理所有处理器
200
+ */
201
+ clear() {
202
+ this.handlers.clear();
203
+ this.globalHandlers.length = 0;
204
+ }
205
+ }
206
+ /**
207
+ * 错误重试工具
208
+ */
209
+ export class RetryManager {
210
+ /**
211
+ * 执行重试逻辑
212
+ */
213
+ static async retry(fn, options = {}) {
214
+ const { maxRetries = 3, delay = 1000, exponentialBackoff = true, retryCondition = () => true } = options;
215
+ let lastError;
216
+ for (let attempt = 0; attempt <= maxRetries; attempt++) {
217
+ try {
218
+ return await fn();
219
+ }
220
+ catch (error) {
221
+ lastError = error;
222
+ // 如果是最后一次尝试或不满足重试条件,直接抛出错误
223
+ if (attempt === maxRetries || !retryCondition(lastError)) {
224
+ throw lastError;
225
+ }
226
+ // 计算延迟时间
227
+ const currentDelay = exponentialBackoff
228
+ ? delay * Math.pow(2, attempt)
229
+ : delay;
230
+ // 等待后重试
231
+ await new Promise(resolve => setTimeout(resolve, currentDelay));
232
+ }
233
+ }
234
+ throw lastError;
235
+ }
236
+ }
237
+ /**
238
+ * 断路器模式实现
239
+ */
240
+ export class CircuitBreaker {
241
+ failureThreshold;
242
+ timeoutMs;
243
+ monitoringPeriodMs;
244
+ failures = 0;
245
+ lastFailureTime = 0;
246
+ state = 'CLOSED';
247
+ constructor(failureThreshold = 5, timeoutMs = 60000, monitoringPeriodMs = 10000) {
248
+ this.failureThreshold = failureThreshold;
249
+ this.timeoutMs = timeoutMs;
250
+ this.monitoringPeriodMs = monitoringPeriodMs;
251
+ }
252
+ /**
253
+ * 执行受保护的操作
254
+ */
255
+ async execute(fn) {
256
+ if (this.state === 'OPEN') {
257
+ if (Date.now() - this.lastFailureTime > this.timeoutMs) {
258
+ this.state = 'HALF_OPEN';
259
+ }
260
+ else {
261
+ throw new Error('Circuit breaker is OPEN');
262
+ }
263
+ }
264
+ try {
265
+ const result = await fn();
266
+ this.onSuccess();
267
+ return result;
268
+ }
269
+ catch (error) {
270
+ this.onFailure();
271
+ throw error;
272
+ }
273
+ }
274
+ onSuccess() {
275
+ this.failures = 0;
276
+ this.state = 'CLOSED';
277
+ }
278
+ onFailure() {
279
+ this.failures++;
280
+ this.lastFailureTime = Date.now();
281
+ if (this.failures >= this.failureThreshold) {
282
+ this.state = 'OPEN';
283
+ }
284
+ }
285
+ /**
286
+ * 获取断路器状态
287
+ */
288
+ getState() {
289
+ return this.state;
290
+ }
291
+ /**
292
+ * 重置断路器
293
+ */
294
+ reset() {
295
+ this.failures = 0;
296
+ this.lastFailureTime = 0;
297
+ this.state = 'CLOSED';
298
+ }
299
+ }
300
+ // 默认错误管理器实例
301
+ export const errorManager = new ErrorManager();
302
+ // 默认错误处理器
303
+ errorManager.registerGlobal((error, context) => {
304
+ // Default error handler - logs to console
305
+ });
306
+ //# sourceMappingURL=errors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"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"}
package/lib/index.d.ts ADDED
@@ -0,0 +1,15 @@
1
+ export * from './app.js';
2
+ export * from './bot.js';
3
+ export * from './plugin.js';
4
+ export * from './command.js';
5
+ export * from './component.js';
6
+ export * from './adapter.js';
7
+ export * from './config.js';
8
+ export * from './message.js';
9
+ export * from './types.js';
10
+ export * from './utils.js';
11
+ export * from './errors.js';
12
+ export * from './cron.js';
13
+ export * from '@zhin.js/database';
14
+ export { Dependency } from '@zhin.js/hmr';
15
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,cAAc,UAAU,CAAA;AACxB,cAAc,UAAU,CAAA;AACxB,cAAc,aAAa,CAAA;AAC3B,cAAc,cAAc,CAAA;AAC5B,cAAc,gBAAgB,CAAA;AAC9B,cAAc,cAAc,CAAA;AAC5B,cAAc,aAAa,CAAA;AAC3B,cAAc,cAAc,CAAA;AAE5B,cAAc,YAAY,CAAA;AAC1B,cAAc,YAAY,CAAA;AAC1B,cAAc,aAAa,CAAA;AAC3B,cAAc,WAAW,CAAA;AACzB,cAAc,mBAAmB,CAAA;AAEjC,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA"}
package/lib/index.js ADDED
@@ -0,0 +1,17 @@
1
+ // Core exports
2
+ export * from './app.js';
3
+ export * from './bot.js';
4
+ export * from './plugin.js';
5
+ export * from './command.js';
6
+ export * from './component.js';
7
+ export * from './adapter.js';
8
+ export * from './config.js';
9
+ export * from './message.js';
10
+ // Logger moved to @zhin.js/logger package
11
+ export * from './types.js';
12
+ export * from './utils.js';
13
+ export * from './errors.js'; // 导出错误处理系统
14
+ export * from './cron.js';
15
+ export * from '@zhin.js/database';
16
+ export { Dependency } from '@zhin.js/hmr';
17
+ //# sourceMappingURL=index.js.map