@taicode/common-base 3.8.0 → 4.0.0-beta.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.
@@ -1,7 +1,7 @@
1
1
  type CleanupFunction = () => unknown | Promise<unknown>;
2
2
  export declare class Disposer {
3
3
  private cleanupFunctions;
4
- addDisposer(cleanupFn: CleanupFunction): void;
4
+ add(cleanupFn: CleanupFunction): void;
5
5
  dispose(): Promise<void>;
6
6
  }
7
7
  export {};
@@ -1 +1 @@
1
- {"version":3,"file":"disposer.d.ts","sourceRoot":"","sources":["../../source/disposer/disposer.ts"],"names":[],"mappings":"AAEA,KAAK,eAAe,GAAG,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAA;AAEvD,qBAAa,QAAQ;IACnB,OAAO,CAAC,gBAAgB,CAAwB;IAGhD,WAAW,CAAC,SAAS,EAAE,eAAe,GAAG,IAAI;IAKvC,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;CAY/B"}
1
+ {"version":3,"file":"disposer.d.ts","sourceRoot":"","sources":["../../source/disposer/disposer.ts"],"names":[],"mappings":"AAEA,KAAK,eAAe,GAAG,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAA;AAEvD,qBAAa,QAAQ;IACnB,OAAO,CAAC,gBAAgB,CAAwB;IAGhD,GAAG,CAAC,SAAS,EAAE,eAAe,GAAG,IAAI;IAK/B,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;CAY/B"}
@@ -2,7 +2,7 @@ import { logger } from '../logger/index.js';
2
2
  export class Disposer {
3
3
  cleanupFunctions = [];
4
4
  // 添加清理函数
5
- addDisposer(cleanupFn) {
5
+ add(cleanupFn) {
6
6
  this.cleanupFunctions.push(cleanupFn);
7
7
  }
8
8
  // 执行所有清理函数
@@ -6,20 +6,20 @@ describe('Disposer', () => {
6
6
  beforeEach(() => {
7
7
  disposer = new Disposer();
8
8
  });
9
- describe('addDisposer', () => {
9
+ describe('add', () => {
10
10
  it('应该能够添加清理函数', () => {
11
11
  const cleanupFn = vi.fn();
12
12
  expect(() => {
13
- disposer.addDisposer(cleanupFn);
13
+ disposer.add(cleanupFn);
14
14
  }).not.toThrow();
15
15
  });
16
16
  it('应该能够添加多个清理函数', async () => {
17
17
  const cleanupFn1 = vi.fn();
18
18
  const cleanupFn2 = vi.fn();
19
19
  const cleanupFn3 = vi.fn();
20
- disposer.addDisposer(cleanupFn1);
21
- disposer.addDisposer(cleanupFn2);
22
- disposer.addDisposer(cleanupFn3);
20
+ disposer.add(cleanupFn1);
21
+ disposer.add(cleanupFn2);
22
+ disposer.add(cleanupFn3);
23
23
  await disposer.dispose();
24
24
  expect(cleanupFn1).toHaveBeenCalledOnce();
25
25
  expect(cleanupFn2).toHaveBeenCalledOnce();
@@ -30,10 +30,10 @@ describe('Disposer', () => {
30
30
  const stringFn = vi.fn(() => 'cleanup result');
31
31
  const numberFn = vi.fn(() => 42);
32
32
  const promiseFn = vi.fn(() => Promise.resolve('async cleanup'));
33
- disposer.addDisposer(voidFn);
34
- disposer.addDisposer(stringFn);
35
- disposer.addDisposer(numberFn);
36
- disposer.addDisposer(promiseFn);
33
+ disposer.add(voidFn);
34
+ disposer.add(stringFn);
35
+ disposer.add(numberFn);
36
+ disposer.add(promiseFn);
37
37
  await disposer.dispose();
38
38
  expect(voidFn).toHaveBeenCalled();
39
39
  expect(stringFn).toHaveBeenCalled();
@@ -46,9 +46,9 @@ describe('Disposer', () => {
46
46
  const cleanupFn1 = vi.fn();
47
47
  const cleanupFn2 = vi.fn();
48
48
  const cleanupFn3 = vi.fn();
49
- disposer.addDisposer(cleanupFn1);
50
- disposer.addDisposer(cleanupFn2);
51
- disposer.addDisposer(cleanupFn3);
49
+ disposer.add(cleanupFn1);
50
+ disposer.add(cleanupFn2);
51
+ disposer.add(cleanupFn3);
52
52
  await disposer.dispose();
53
53
  expect(cleanupFn1).toHaveBeenCalledOnce();
54
54
  expect(cleanupFn2).toHaveBeenCalledOnce();
@@ -56,23 +56,23 @@ describe('Disposer', () => {
56
56
  });
57
57
  it('应该按添加顺序执行清理函数', async () => {
58
58
  const executionOrder = [];
59
- disposer.addDisposer(() => executionOrder.push(1));
60
- disposer.addDisposer(() => executionOrder.push(2));
61
- disposer.addDisposer(() => executionOrder.push(3));
59
+ disposer.add(() => executionOrder.push(1));
60
+ disposer.add(() => executionOrder.push(2));
61
+ disposer.add(() => executionOrder.push(3));
62
62
  await disposer.dispose();
63
63
  expect(executionOrder).toEqual([1, 2, 3]);
64
64
  });
65
65
  it('应该按添加顺序执行异步清理函数', async () => {
66
66
  const executionOrder = [];
67
- disposer.addDisposer(async () => {
67
+ disposer.add(async () => {
68
68
  await Promise.resolve();
69
69
  executionOrder.push(1);
70
70
  });
71
- disposer.addDisposer(async () => {
71
+ disposer.add(async () => {
72
72
  await Promise.resolve();
73
73
  executionOrder.push(2);
74
74
  });
75
- disposer.addDisposer(async () => {
75
+ disposer.add(async () => {
76
76
  await Promise.resolve();
77
77
  executionOrder.push(3);
78
78
  });
@@ -87,9 +87,9 @@ describe('Disposer', () => {
87
87
  const workingFn2 = vi.fn();
88
88
  // 模拟 logger.error
89
89
  const loggerErrorSpy = vi.spyOn(logger, 'error').mockImplementation(() => { });
90
- disposer.addDisposer(workingFn1);
91
- disposer.addDisposer(errorFn);
92
- disposer.addDisposer(workingFn2);
90
+ disposer.add(workingFn1);
91
+ disposer.add(errorFn);
92
+ disposer.add(workingFn2);
93
93
  // dispose 不应该抛出错误
94
94
  await expect(disposer.dispose()).resolves.toBeUndefined();
95
95
  // 所有函数都应该被调用
@@ -102,7 +102,7 @@ describe('Disposer', () => {
102
102
  });
103
103
  it('应该在执行后清空清理函数列表', async () => {
104
104
  const cleanupFn = vi.fn();
105
- disposer.addDisposer(cleanupFn);
105
+ disposer.add(cleanupFn);
106
106
  await disposer.dispose();
107
107
  expect(cleanupFn).toHaveBeenCalledOnce();
108
108
  // 再次调用 dispose 不应该执行任何函数
@@ -112,9 +112,9 @@ describe('Disposer', () => {
112
112
  it('应该能够在清空后重新添加清理函数', async () => {
113
113
  const firstCleanup = vi.fn();
114
114
  const secondCleanup = vi.fn();
115
- disposer.addDisposer(firstCleanup);
115
+ disposer.add(firstCleanup);
116
116
  await disposer.dispose();
117
- disposer.addDisposer(secondCleanup);
117
+ disposer.add(secondCleanup);
118
118
  await disposer.dispose();
119
119
  expect(firstCleanup).toHaveBeenCalledOnce();
120
120
  expect(secondCleanup).toHaveBeenCalledOnce();
@@ -124,7 +124,7 @@ describe('Disposer', () => {
124
124
  });
125
125
  it('应该能够多次调用 dispose', async () => {
126
126
  const cleanupFn = vi.fn();
127
- disposer.addDisposer(cleanupFn);
127
+ disposer.add(cleanupFn);
128
128
  await disposer.dispose();
129
129
  await disposer.dispose();
130
130
  await disposer.dispose();
@@ -135,8 +135,8 @@ describe('Disposer', () => {
135
135
  it('应该能够清理事件监听器', async () => {
136
136
  const removeEventListener = vi.fn();
137
137
  const unsubscribe = vi.fn();
138
- disposer.addDisposer(removeEventListener);
139
- disposer.addDisposer(unsubscribe);
138
+ disposer.add(removeEventListener);
139
+ disposer.add(unsubscribe);
140
140
  await disposer.dispose();
141
141
  expect(removeEventListener).toHaveBeenCalled();
142
142
  expect(unsubscribe).toHaveBeenCalled();
@@ -144,8 +144,8 @@ describe('Disposer', () => {
144
144
  it('应该能够清理定时器', async () => {
145
145
  const clearTimeout = vi.fn();
146
146
  const clearInterval = vi.fn();
147
- disposer.addDisposer(() => clearTimeout(123));
148
- disposer.addDisposer(() => clearInterval(456));
147
+ disposer.add(() => clearTimeout(123));
148
+ disposer.add(() => clearInterval(456));
149
149
  await disposer.dispose();
150
150
  expect(clearTimeout).toHaveBeenCalledWith(123);
151
151
  expect(clearInterval).toHaveBeenCalledWith(456);
@@ -153,8 +153,8 @@ describe('Disposer', () => {
153
153
  it('应该能够清理资源连接', async () => {
154
154
  const closeConnection = vi.fn();
155
155
  const releaseResource = vi.fn();
156
- disposer.addDisposer(() => closeConnection());
157
- disposer.addDisposer(() => releaseResource());
156
+ disposer.add(() => closeConnection());
157
+ disposer.add(() => releaseResource());
158
158
  await disposer.dispose();
159
159
  expect(closeConnection).toHaveBeenCalled();
160
160
  expect(releaseResource).toHaveBeenCalled();
@@ -167,9 +167,9 @@ describe('Disposer', () => {
167
167
  };
168
168
  const offFunction1 = mockEventEmitter.on('event1', vi.fn());
169
169
  const offFunction2 = mockEventEmitter.on('event2', vi.fn());
170
- disposer.addDisposer(offFunction1);
171
- disposer.addDisposer(offFunction2);
172
- disposer.addDisposer(() => mockEventEmitter.cleanup());
170
+ disposer.add(offFunction1);
171
+ disposer.add(offFunction2);
172
+ disposer.add(() => mockEventEmitter.cleanup());
173
173
  await disposer.dispose();
174
174
  expect(offFunction1).toHaveBeenCalled();
175
175
  expect(offFunction2).toHaveBeenCalled();
@@ -180,7 +180,7 @@ describe('Disposer', () => {
180
180
  it('应该捕获并记录同步错误', async () => {
181
181
  const loggerErrorSpy = vi.spyOn(logger, 'error').mockImplementation(() => { });
182
182
  const error = new Error('Sync error');
183
- disposer.addDisposer(() => {
183
+ disposer.add(() => {
184
184
  throw error;
185
185
  });
186
186
  await disposer.dispose();
@@ -189,13 +189,13 @@ describe('Disposer', () => {
189
189
  });
190
190
  it('应该处理不同类型的错误', async () => {
191
191
  const loggerErrorSpy = vi.spyOn(logger, 'error').mockImplementation(() => { });
192
- disposer.addDisposer(() => {
192
+ disposer.add(() => {
193
193
  throw new TypeError('Type error');
194
194
  });
195
- disposer.addDisposer(() => {
195
+ disposer.add(() => {
196
196
  throw 'String error';
197
197
  });
198
- disposer.addDisposer(() => {
198
+ disposer.add(() => {
199
199
  throw { message: 'Object error' };
200
200
  });
201
201
  await disposer.dispose();
@@ -205,7 +205,7 @@ describe('Disposer', () => {
205
205
  it('应该捕获并记录异步错误', async () => {
206
206
  const loggerErrorSpy = vi.spyOn(logger, 'error').mockImplementation(() => { });
207
207
  const asyncError = new Error('Async error');
208
- disposer.addDisposer(async () => {
208
+ disposer.add(async () => {
209
209
  throw asyncError;
210
210
  });
211
211
  await disposer.dispose();
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@taicode/common-base",
3
- "version": "3.8.0",
3
+ "version": "4.0.0-beta.2",
4
4
  "author": "Alain",
5
5
  "license": "ISC",
6
6
  "description": "",