@taicode/common-base 1.7.4 → 1.7.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (34) hide show
  1. package/output/error/error.d.ts +110 -67
  2. package/output/error/error.d.ts.map +1 -1
  3. package/output/error/error.js +109 -61
  4. package/output/error/error.test.d.ts +0 -17
  5. package/output/error/error.test.d.ts.map +1 -1
  6. package/output/error/error.test.js +209 -99
  7. package/output/error/index.d.ts +2 -1
  8. package/output/error/index.d.ts.map +1 -1
  9. package/output/error/index.js +1 -1
  10. package/output/events/disposer.d.ts +6 -0
  11. package/output/events/disposer.d.ts.map +1 -0
  12. package/output/events/disposer.js +19 -0
  13. package/output/events/disposer.test.d.ts +2 -0
  14. package/output/events/disposer.test.d.ts.map +1 -0
  15. package/output/events/disposer.test.js +192 -0
  16. package/output/events/event-emitter.d.ts +33 -0
  17. package/output/events/event-emitter.d.ts.map +1 -0
  18. package/output/events/event-emitter.js +66 -0
  19. package/output/events/event-emitter.test.d.ts +2 -0
  20. package/output/events/event-emitter.test.d.ts.map +1 -0
  21. package/output/events/event-emitter.test.js +213 -0
  22. package/output/events/index.d.ts +3 -0
  23. package/output/events/index.d.ts.map +1 -0
  24. package/output/events/index.js +3 -0
  25. package/output/logger/formatter.d.ts +0 -1
  26. package/output/logger/formatter.d.ts.map +1 -1
  27. package/output/logger/formatter.js +1 -17
  28. package/output/logger/formatter.test.d.ts +0 -24
  29. package/output/logger/formatter.test.d.ts.map +1 -1
  30. package/output/logger/formatter.test.js +11 -30
  31. package/output/logger/logger.test.d.ts +0 -19
  32. package/output/logger/logger.test.d.ts.map +1 -1
  33. package/output/logger/logger.test.js +6 -16
  34. package/package.json +3 -2
@@ -1,6 +1,6 @@
1
1
  import { describe, it, expect, beforeEach } from 'vitest';
2
2
  import { DefaultLogFormatter } from './formatter';
3
- import { UserError, SystemError, UnknownError } from '../error';
3
+ import { UserError, SystemError } from '../error';
4
4
  describe('DefaultLogFormatter', () => {
5
5
  let formatter;
6
6
  beforeEach(() => {
@@ -119,11 +119,11 @@ describe('DefaultLogFormatter', () => {
119
119
  describe('错误格式化', () => {
120
120
  describe('UserError 格式化', () => {
121
121
  it('应该格式化带有完整信息的 UserError', () => {
122
- const error = new UserError('validation-failed', '验证失败', {
122
+ const error = new UserError('validation-failed', {
123
123
  field: 'email',
124
124
  value: 'invalid-email',
125
125
  rule: 'email-format'
126
- });
126
+ }, '验证失败');
127
127
  const result = formatter.format(error);
128
128
  expect(result).toContain('🚫 User Error [validation-failed]');
129
129
  expect(result).toContain('Message: 验证失败');
@@ -132,7 +132,7 @@ describe('DefaultLogFormatter', () => {
132
132
  });
133
133
  it('应该在禁用颜色时不包含 ANSI 代码', () => {
134
134
  const formatterWithoutColors = new DefaultLogFormatter({}, { useColors: false });
135
- const error = new UserError('test-error', '测试错误');
135
+ const error = new UserError('test-error', undefined, '测试错误');
136
136
  const result = formatterWithoutColors.format(error);
137
137
  expect(result).not.toContain('\x1b[');
138
138
  expect(result).toContain('🚫 User Error [test-error]');
@@ -140,14 +140,14 @@ describe('DefaultLogFormatter', () => {
140
140
  });
141
141
  it('应该在禁用堆栈时不显示堆栈信息', () => {
142
142
  const formatterWithoutStack = new DefaultLogFormatter({}, { showStack: false });
143
- const error = new UserError('test-error', '测试错误');
143
+ const error = new UserError('test-error', undefined, '测试错误');
144
144
  const result = formatterWithoutStack.format(error);
145
145
  expect(result).not.toContain('Stack:');
146
146
  expect(result).toContain('Message: 测试错误');
147
147
  });
148
148
  it('应该在禁用上下文时不显示上下文信息', () => {
149
149
  const formatterWithoutContext = new DefaultLogFormatter({}, { showContext: false });
150
- const error = new UserError('test-error', '测试错误', { field: 'test' });
150
+ const error = new UserError('test-error', { field: 'test' }, '测试错误');
151
151
  const result = formatterWithoutContext.format(error);
152
152
  expect(result).not.toContain('Context:');
153
153
  expect(result).toContain('Message: 测试错误');
@@ -155,11 +155,11 @@ describe('DefaultLogFormatter', () => {
155
155
  });
156
156
  describe('SystemError 格式化', () => {
157
157
  it('应该格式化带有完整信息的 SystemError', () => {
158
- const error = new SystemError('database-error', '数据库连接失败', {
158
+ const error = new SystemError('database-error', {
159
159
  table: 'users',
160
160
  query: 'SELECT * FROM users',
161
161
  operation: 'select'
162
- });
162
+ }, '数据库连接失败');
163
163
  const result = formatter.format(error);
164
164
  expect(result).toContain('⚠️ System Error [database-error]');
165
165
  expect(result).toContain('Message: 数据库连接失败');
@@ -168,31 +168,12 @@ describe('DefaultLogFormatter', () => {
168
168
  });
169
169
  it('应该在禁用颜色时不包含 ANSI 代码', () => {
170
170
  const formatterWithoutColors = new DefaultLogFormatter({}, { useColors: false });
171
- const error = new SystemError('network-error', '网络错误');
171
+ const error = new SystemError('network-error', undefined, '网络错误');
172
172
  const result = formatterWithoutColors.format(error);
173
173
  expect(result).not.toContain('\x1b[');
174
174
  expect(result).toContain('⚠️ System Error [network-error]');
175
175
  });
176
176
  });
177
- describe('UnknownError 格式化', () => {
178
- it('应该格式化带有完整信息的 UnknownError', () => {
179
- const error = new UnknownError('未知错误', {
180
- cause: 'something went wrong'
181
- });
182
- const result = formatter.format(error);
183
- expect(result).toContain('❓ Unknown Error');
184
- expect(result).toContain('Message: 未知错误');
185
- expect(result).toContain('Context:');
186
- expect(result).toContain('Stack:');
187
- });
188
- it('应该在禁用颜色时不包含 ANSI 代码', () => {
189
- const formatterWithoutColors = new DefaultLogFormatter({}, { useColors: false });
190
- const error = new UnknownError('测试未知错误');
191
- const result = formatterWithoutColors.format(error);
192
- expect(result).not.toContain('\x1b[');
193
- expect(result).toContain('❓ Unknown Error');
194
- });
195
- });
196
177
  describe('通用 Error 格式化', () => {
197
178
  it('应该格式化普通 Error', () => {
198
179
  const error = new Error('普通错误');
@@ -291,7 +272,7 @@ describe('DefaultLogFormatter', () => {
291
272
  showContext: false,
292
273
  useColors: false
293
274
  });
294
- const error = new UserError('test-error', '测试错误', { field: 'test' });
275
+ const error = new UserError('test-error', { field: 'test' }, '测试错误');
295
276
  const result = minimalistFormatter.format(error);
296
277
  expect(result).not.toContain('Stack:');
297
278
  expect(result).not.toContain('Context:');
@@ -305,7 +286,7 @@ describe('DefaultLogFormatter', () => {
305
286
  showContext: false,
306
287
  useColors: false
307
288
  });
308
- const error = new SystemError('database-error', '数据库错误', { table: 'users' });
289
+ const error = new SystemError('database-error', { table: 'users' }, '数据库错误');
309
290
  const result = stackOnlyFormatter.format(error);
310
291
  expect(result).toContain('Stack:');
311
292
  expect(result).not.toContain('Context:');
@@ -1,21 +1,2 @@
1
- declare module '../error' {
2
- interface UserErrorTypes {
3
- 'validation-failed': {
4
- field?: string;
5
- value?: unknown;
6
- rule?: string;
7
- };
8
- 'test-error': {
9
- field?: string;
10
- };
11
- }
12
- interface SystemErrorTypes {
13
- 'database-error': {
14
- query?: string;
15
- table?: string;
16
- operation?: string;
17
- };
18
- }
19
- }
20
1
  export {};
21
2
  //# sourceMappingURL=logger.test.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"logger.test.d.ts","sourceRoot":"","sources":["../../source/logger/logger.test.ts"],"names":[],"mappings":"AAOA,OAAO,QAAQ,UAAU,CAAC;IACxB,UAAU,cAAc;QACtB,mBAAmB,EAAE;YAAE,KAAK,CAAC,EAAE,MAAM,CAAC;YAAC,KAAK,CAAC,EAAE,OAAO,CAAC;YAAC,IAAI,CAAC,EAAE,MAAM,CAAA;SAAE,CAAA;QACvE,YAAY,EAAE;YAAE,KAAK,CAAC,EAAE,MAAM,CAAA;SAAE,CAAA;KACjC;IAED,UAAU,gBAAgB;QACxB,gBAAgB,EAAE;YAAE,KAAK,CAAC,EAAE,MAAM,CAAC;YAAC,KAAK,CAAC,EAAE,MAAM,CAAC;YAAC,SAAS,CAAC,EAAE,MAAM,CAAA;SAAE,CAAA;KACzE;CACF"}
1
+ {"version":3,"file":"logger.test.d.ts","sourceRoot":"","sources":["../../source/logger/logger.test.ts"],"names":[],"mappings":""}
@@ -1,7 +1,7 @@
1
1
  import { describe, it, expect, vi } from 'vitest';
2
2
  import { Logger } from './logger';
3
3
  import { DefaultLogFormatter } from './formatter';
4
- import { UserError, SystemError, UnknownError } from '../error';
4
+ import { UserError, SystemError } from '../error';
5
5
  import { MemoryTransport } from './transport'; // 测试向后兼容性
6
6
  describe('Logger', () => {
7
7
  it('应该默认记录 info 及以上级别', () => {
@@ -66,11 +66,11 @@ describe('Logger 错误处理', () => {
66
66
  it('应该正确格式化 UserError', () => {
67
67
  const mockPrint = vi.fn();
68
68
  const logger = new Logger({ print: mockPrint });
69
- const userError = new UserError('validation-failed', '邮箱格式无效', {
69
+ const userError = new UserError('validation-failed', {
70
70
  field: 'email',
71
71
  value: 'invalid-email',
72
72
  rule: 'email-format'
73
- });
73
+ }, '邮箱格式无效');
74
74
  logger.error('测试用户错误:', userError);
75
75
  expect(mockPrint).toHaveBeenCalledWith('error', '测试用户错误:', expect.stringContaining('🚫 User Error [validation-failed]'));
76
76
  expect(mockPrint).toHaveBeenCalledWith('error', '测试用户错误:', expect.stringContaining('邮箱格式无效'));
@@ -78,25 +78,15 @@ describe('Logger 错误处理', () => {
78
78
  it('应该正确格式化 SystemError', () => {
79
79
  const mockPrint = vi.fn();
80
80
  const logger = new Logger({ print: mockPrint });
81
- const systemError = new SystemError('database-error', '数据库连接失败', {
81
+ const systemError = new SystemError('database-error', {
82
82
  table: 'users',
83
83
  query: 'SELECT * FROM users',
84
84
  operation: 'select'
85
- });
85
+ }, '数据库连接失败');
86
86
  logger.error('测试系统错误:', systemError);
87
87
  expect(mockPrint).toHaveBeenCalledWith('error', '测试系统错误:', expect.stringContaining('⚠️ System Error [database-error]'));
88
88
  expect(mockPrint).toHaveBeenCalledWith('error', '测试系统错误:', expect.stringContaining('数据库连接失败'));
89
89
  });
90
- it('应该正确格式化 UnknownError', () => {
91
- const mockPrint = vi.fn();
92
- const logger = new Logger({ print: mockPrint });
93
- const unknownError = new UnknownError('未知错误', {
94
- cause: 'something went wrong'
95
- });
96
- logger.error('测试未知错误:', unknownError);
97
- expect(mockPrint).toHaveBeenCalledWith('error', '测试未知错误:', expect.stringContaining('❓ Unknown Error'));
98
- expect(mockPrint).toHaveBeenCalledWith('error', '测试未知错误:', expect.stringContaining('未知错误'));
99
- });
100
90
  it('应该正确格式化普通 Error', () => {
101
91
  const mockPrint = vi.fn();
102
92
  const logger = new Logger({ print: mockPrint });
@@ -132,7 +122,7 @@ describe('Logger 错误处理', () => {
132
122
  print: mockPrint,
133
123
  formatter: customFormatter
134
124
  });
135
- const userError = new UserError('test-error', '测试错误', { field: 'test' });
125
+ const userError = new UserError('test-error', { field: 'test' }, '测试错误');
136
126
  logger.error(userError);
137
127
  const formattedError = mockPrint.mock.calls[0][1];
138
128
  expect(formattedError).not.toContain('Stack:');
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@taicode/common-base",
3
- "version": "1.7.4",
3
+ "version": "1.7.6",
4
4
  "author": "Alain",
5
5
  "license": "ISC",
6
6
  "description": "",
@@ -28,6 +28,7 @@
28
28
  "output"
29
29
  ],
30
30
  "devDependencies": {
31
- "vitest": "^3.2.4"
31
+ "vitest": "^3.2.4",
32
+ "mobx": "^6.0.0"
32
33
  }
33
34
  }