@hile/message-modem 1.0.5 → 1.0.7

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/dist/index.d.ts CHANGED
@@ -19,6 +19,7 @@ export declare abstract class MessageModem {
19
19
  private id;
20
20
  private readonly aborts;
21
21
  private readonly stacks;
22
+ protected _dispose(): void;
22
23
  /**
23
24
  * 创建自增 ID
24
25
  * 超过最大安全整数时重置为 0
package/dist/index.js CHANGED
@@ -10,6 +10,16 @@ export class MessageModem {
10
10
  id = 0;
11
11
  aborts = new Map();
12
12
  stacks = new Map();
13
+ _dispose() {
14
+ for (const { reject } of this.stacks.values()) {
15
+ reject(new AbortException());
16
+ }
17
+ for (const reject of this.aborts.values()) {
18
+ reject(new AbortException());
19
+ }
20
+ this.aborts.clear();
21
+ this.stacks.clear();
22
+ }
13
23
  /**
14
24
  * 创建自增 ID
15
25
  * 超过最大安全整数时重置为 0
@@ -87,12 +97,20 @@ export class MessageModem {
87
97
  controller.signal.removeEventListener('abort', aborthandler);
88
98
  clear();
89
99
  };
90
- // Abort 处理函数
100
+ // Abort 处理函数(post 失败时仍须 reject,否则调用方会一直挂起)
91
101
  const aborthandler = () => {
92
102
  clearTimeout(timer);
93
- this.post(this.createPostData(MESSAGE_MODEM_TYPE.ABORT, state.id));
94
- clear();
95
- reject(new AbortException());
103
+ try {
104
+ this.post(this.createPostData(MESSAGE_MODEM_TYPE.ABORT, state.id));
105
+ }
106
+ catch {
107
+ /* 例如 WebSocket 已关闭时 send 可能抛错 */
108
+ }
109
+ finally {
110
+ controller.signal.removeEventListener('abort', aborthandler);
111
+ clear();
112
+ reject(new AbortException());
113
+ }
96
114
  };
97
115
  // 成功处理
98
116
  const _resolve = (data) => {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@hile/message-modem",
3
- "version": "1.0.5",
3
+ "version": "1.0.7",
4
4
  "type": "module",
5
5
  "main": "./dist/index.js",
6
6
  "scripts": {
@@ -21,5 +21,5 @@
21
21
  "fix-esm-import-path": "^1.10.3",
22
22
  "vitest": "^4.0.18"
23
23
  },
24
- "gitHead": "ac64d9d9ad33b67e6205fc6f5004e4ff852c0852"
24
+ "gitHead": "4549afb84d25e8dffdfab2e27ed05e52828c368d"
25
25
  }