@ya-modbus/emulator 0.10.5 → 0.10.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.
- package/CHANGELOG.md +6 -0
- package/dist/cjs/src/transports/tcp.d.ts +2 -0
- package/dist/cjs/src/transports/tcp.d.ts.map +1 -1
- package/dist/cjs/src/transports/tcp.js +44 -13
- package/dist/cjs/src/transports/tcp.js.map +1 -1
- package/dist/cjs/tsconfig.cjs.tsbuildinfo +1 -1
- package/dist/esm/src/transports/tcp.d.ts +2 -0
- package/dist/esm/src/transports/tcp.d.ts.map +1 -1
- package/dist/esm/src/transports/tcp.js +44 -13
- package/dist/esm/src/transports/tcp.js.map +1 -1
- package/dist/esm/tsconfig.esm.tsbuildinfo +1 -1
- package/package.json +2 -2
package/CHANGELOG.md
CHANGED
|
@@ -3,6 +3,12 @@
|
|
|
3
3
|
All notable changes to this project will be documented in this file.
|
|
4
4
|
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
|
5
5
|
|
|
6
|
+
## [0.10.6](https://github.com/groupsky/ya-modbus/compare/@ya-modbus/emulator@0.10.5...@ya-modbus/emulator@0.10.6) (2026-02-07)
|
|
7
|
+
|
|
8
|
+
### Bug Fixes
|
|
9
|
+
|
|
10
|
+
- **emulator:** prevent race condition when stop() called during TCP initialization ([#292](https://github.com/groupsky/ya-modbus/issues/292)) ([b6b3af9](https://github.com/groupsky/ya-modbus/commit/b6b3af9a6ef9d6d64e8ce14b607970cf3c65a6ad)), closes [#275](https://github.com/groupsky/ya-modbus/issues/275) [#275](https://github.com/groupsky/ya-modbus/issues/275) [#293](https://github.com/groupsky/ya-modbus/issues/293) [#294](https://github.com/groupsky/ya-modbus/issues/294) [#295](https://github.com/groupsky/ya-modbus/issues/295) [#296](https://github.com/groupsky/ya-modbus/issues/296) [#297](https://github.com/groupsky/ya-modbus/issues/297) [#298](https://github.com/groupsky/ya-modbus/issues/298) [#299](https://github.com/groupsky/ya-modbus/issues/299)
|
|
11
|
+
|
|
6
12
|
## [0.10.5](https://github.com/groupsky/ya-modbus/compare/@ya-modbus/emulator@0.10.4...@ya-modbus/emulator@0.10.5) (2026-02-07)
|
|
7
13
|
|
|
8
14
|
### Bug Fixes
|
|
@@ -13,6 +13,8 @@ export declare class TcpTransport extends BaseTransport {
|
|
|
13
13
|
private requestHandler?;
|
|
14
14
|
private server?;
|
|
15
15
|
private started;
|
|
16
|
+
private initReject?;
|
|
17
|
+
private initTimeout?;
|
|
16
18
|
constructor(config: TcpTransportConfig);
|
|
17
19
|
start(): Promise<void>;
|
|
18
20
|
stop(): Promise<void>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tcp.d.ts","sourceRoot":"","sources":["../../../../src/transports/tcp.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAgBH,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAA;AAEzC,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;CACb;AAED,qBAAa,YAAa,SAAQ,aAAa;IAC7C,OAAO,CAAC,MAAM,CAAoB;IAClC,OAAO,CAAC,cAAc,CAAC,CAAuD;IAC9E,OAAO,CAAC,MAAM,CAAC,CAAW;IAC1B,OAAO,CAAC,OAAO,CAAQ;
|
|
1
|
+
{"version":3,"file":"tcp.d.ts","sourceRoot":"","sources":["../../../../src/transports/tcp.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAgBH,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAA;AAEzC,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;CACb;AAED,qBAAa,YAAa,SAAQ,aAAa;IAC7C,OAAO,CAAC,MAAM,CAAoB;IAClC,OAAO,CAAC,cAAc,CAAC,CAAuD;IAC9E,OAAO,CAAC,MAAM,CAAC,CAAW;IAC1B,OAAO,CAAC,OAAO,CAAQ;IACvB,OAAO,CAAC,UAAU,CAAC,CAAyB;IAC5C,OAAO,CAAC,WAAW,CAAC,CAAgB;gBAExB,MAAM,EAAE,kBAAkB;IAKhC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAmGtB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAgD3B,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IASxD,SAAS,CAAC,OAAO,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,GAAG,IAAI;IAI/E;;OAEG;YACW,kBAAkB;IAehC;;OAEG;YACW,mBAAmB;IAcjC;;OAEG;YACW,cAAc;IAe5B;;OAEG;YACW,eAAe;CAa9B"}
|
|
@@ -62,26 +62,40 @@ class TcpTransport extends base_js_1.BaseTransport {
|
|
|
62
62
|
// Wait for initialized event with timeout
|
|
63
63
|
return new Promise((resolve, reject) => {
|
|
64
64
|
let isInitializing = true;
|
|
65
|
-
|
|
65
|
+
this.initReject = reject;
|
|
66
|
+
const cleanupOnError = () => {
|
|
66
67
|
isInitializing = false;
|
|
68
|
+
delete this.initReject;
|
|
69
|
+
if (this.initTimeout) {
|
|
70
|
+
clearTimeout(this.initTimeout);
|
|
71
|
+
delete this.initTimeout;
|
|
72
|
+
}
|
|
67
73
|
events_1.EventEmitter.prototype.removeAllListeners.call(server, 'initialized');
|
|
68
74
|
events_1.EventEmitter.prototype.removeAllListeners.call(server, 'error');
|
|
69
75
|
delete this.server;
|
|
76
|
+
};
|
|
77
|
+
const cleanupOnSuccess = () => {
|
|
78
|
+
isInitializing = false;
|
|
79
|
+
delete this.initReject;
|
|
80
|
+
if (this.initTimeout) {
|
|
81
|
+
clearTimeout(this.initTimeout);
|
|
82
|
+
delete this.initTimeout;
|
|
83
|
+
}
|
|
84
|
+
events_1.EventEmitter.prototype.removeAllListeners.call(server, 'initialized');
|
|
85
|
+
events_1.EventEmitter.prototype.removeAllListeners.call(server, 'error');
|
|
86
|
+
};
|
|
87
|
+
this.initTimeout = setTimeout(() => {
|
|
88
|
+
cleanupOnError();
|
|
70
89
|
reject(new Error('TCP server initialization timeout after 10s'));
|
|
71
90
|
}, 10000);
|
|
72
91
|
server.on('initialized', () => {
|
|
73
|
-
|
|
74
|
-
isInitializing = false;
|
|
92
|
+
cleanupOnSuccess();
|
|
75
93
|
this.started = true;
|
|
76
94
|
resolve();
|
|
77
95
|
});
|
|
78
96
|
server.on('error', (err) => {
|
|
79
97
|
if (isInitializing) {
|
|
80
|
-
|
|
81
|
-
isInitializing = false;
|
|
82
|
-
events_1.EventEmitter.prototype.removeAllListeners.call(server, 'initialized');
|
|
83
|
-
events_1.EventEmitter.prototype.removeAllListeners.call(server, 'error');
|
|
84
|
-
delete this.server;
|
|
98
|
+
cleanupOnError();
|
|
85
99
|
reject(err);
|
|
86
100
|
}
|
|
87
101
|
else {
|
|
@@ -92,13 +106,30 @@ class TcpTransport extends base_js_1.BaseTransport {
|
|
|
92
106
|
});
|
|
93
107
|
}
|
|
94
108
|
async stop() {
|
|
95
|
-
|
|
109
|
+
// Clear initialization timeout if pending
|
|
110
|
+
if (this.initTimeout) {
|
|
111
|
+
clearTimeout(this.initTimeout);
|
|
112
|
+
delete this.initTimeout;
|
|
113
|
+
}
|
|
114
|
+
// Clean up event listeners FIRST to prevent race condition (issue #294)
|
|
115
|
+
// This ensures 'initialized' can't fire after we reject the Promise
|
|
116
|
+
if (this.server) {
|
|
117
|
+
events_1.EventEmitter.prototype.removeAllListeners.call(this.server, 'initialized');
|
|
118
|
+
events_1.EventEmitter.prototype.removeAllListeners.call(this.server, 'error');
|
|
119
|
+
}
|
|
120
|
+
// If initialization is pending, reject it
|
|
121
|
+
if (this.initReject) {
|
|
122
|
+
this.initReject(new Error('Transport stopped during initialization'));
|
|
123
|
+
delete this.initReject;
|
|
124
|
+
}
|
|
125
|
+
if (!this.server) {
|
|
126
|
+
return;
|
|
127
|
+
}
|
|
128
|
+
// Only close the server if it was started, otherwise just clean up
|
|
129
|
+
if (!this.started) {
|
|
130
|
+
delete this.server;
|
|
96
131
|
return;
|
|
97
132
|
}
|
|
98
|
-
// Clean up event listeners to prevent memory leaks (issue #253)
|
|
99
|
-
// Use EventEmitter.prototype since modbus-serial doesn't expose these methods in types
|
|
100
|
-
events_1.EventEmitter.prototype.removeAllListeners.call(this.server, 'initialized');
|
|
101
|
-
events_1.EventEmitter.prototype.removeAllListeners.call(this.server, 'error');
|
|
102
133
|
return new Promise((resolve, reject) => {
|
|
103
134
|
if (!this.server) {
|
|
104
135
|
resolve();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tcp.js","sourceRoot":"","sources":["../../../../src/transports/tcp.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;AAEH,mCAAqC;AAErC,iDAAyC;AAGzC,oFAO4C;AAE5C,uCAAyC;AAOzC,MAAa,YAAa,SAAQ,uBAAa;
|
|
1
|
+
{"version":3,"file":"tcp.js","sourceRoot":"","sources":["../../../../src/transports/tcp.ts"],"names":[],"mappings":"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"}
|