appium-ios-remotexpc 5.20.2 → 5.20.3
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
CHANGED
|
@@ -1,3 +1,9 @@
|
|
|
1
|
+
## [5.20.3](https://github.com/appium/appium-ios-remotexpc/compare/v5.20.2...v5.20.3) (2026-09-18)
|
|
2
|
+
|
|
3
|
+
### Bug Fixes
|
|
4
|
+
|
|
5
|
+
* guard BaseSocketService error re-emit to avoid unhandled EPIPE crash ([#333](https://github.com/appium/appium-ios-remotexpc/issues/333)) ([55c9de8](https://github.com/appium/appium-ios-remotexpc/commit/55c9de896d396a29791947e8d3a0dc3bc0d0a55b))
|
|
6
|
+
|
|
1
7
|
## [5.20.2](https://github.com/appium/appium-ios-remotexpc/compare/v5.20.1...v5.20.2) (2026-09-18)
|
|
2
8
|
|
|
3
9
|
### Bug Fixes
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"base-socket-service.d.ts","sourceRoot":"","sources":["../../src/base-socket-service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,YAAY,EAAC,MAAM,aAAa,CAAC;AACzC,OAAO,EAAC,MAAM,EAAC,MAAM,UAAU,CAAC;AAChC,OAAO,EAAC,KAAK,QAAQ,EAAC,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"base-socket-service.d.ts","sourceRoot":"","sources":["../../src/base-socket-service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,YAAY,EAAC,MAAM,aAAa,CAAC;AACzC,OAAO,EAAC,MAAM,EAAC,MAAM,UAAU,CAAC;AAChC,OAAO,EAAC,KAAK,QAAQ,EAAC,MAAM,aAAa,CAAC;AAM1C,cAAM,iBAAkB,SAAQ,YAAY;IAC1C,SAAS,CAAC,aAAa,EAAE,MAAM,CAAC;IAChC,SAAS,CAAC,YAAY,EAAE,OAAO,CAAS;IAExC;;OAEG;gBACS,YAAY,EAAE,MAAM;IAgChC,4BAA4B,CAAC,GAAG,aAAa,EAAE,QAAQ,EAAE,GAAG,IAAI;IAUhE,KAAK,IAAI,IAAI;CAKd;AAED,OAAO,EAAC,iBAAiB,EAAC,CAAC"}
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
import { EventEmitter } from 'node:events';
|
|
2
2
|
import { Socket } from 'node:net';
|
|
3
|
+
import { getLogger } from './lib/logger.js';
|
|
4
|
+
const log = getLogger('BaseSocketService');
|
|
3
5
|
class BaseSocketService extends EventEmitter {
|
|
4
6
|
_socketClient;
|
|
5
7
|
_isConnected = false;
|
|
@@ -19,8 +21,15 @@ class BaseSocketService extends EventEmitter {
|
|
|
19
21
|
});
|
|
20
22
|
}
|
|
21
23
|
// setup basic error handling
|
|
24
|
+
// Only re-emit if someone is listening, otherwise this throws (unhandled 'error') instead of
|
|
25
|
+
// just leaving the error on the underlying socket. Log it so it isn't silently dropped.
|
|
22
26
|
this._socketClient.on('error', (err) => {
|
|
23
|
-
this.
|
|
27
|
+
if (this.listenerCount('error') > 0) {
|
|
28
|
+
this.emit('error', err);
|
|
29
|
+
}
|
|
30
|
+
else {
|
|
31
|
+
log.error(`Unhandled socket error: ${err}`);
|
|
32
|
+
}
|
|
24
33
|
});
|
|
25
34
|
this._socketClient.on('close', () => {
|
|
26
35
|
this._isConnected = false;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"base-socket-service.js","sourceRoot":"","sources":["../../src/base-socket-service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,YAAY,EAAC,MAAM,aAAa,CAAC;AACzC,OAAO,EAAC,MAAM,EAAC,MAAM,UAAU,CAAC;AAGhC,MAAM,iBAAkB,SAAQ,YAAY;IAChC,aAAa,CAAS;IACtB,YAAY,GAAY,KAAK,CAAC;IAExC;;OAEG;IACH,YAAY,YAAoB;QAC9B,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,aAAa,GAAG,YAAY,CAAC;QAElC,6BAA6B;QAC7B,IAAI,CAAC,YAAY,GAAG,CAAC,YAAY,CAAC,UAAU,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC;QAExE,yCAAyC;QACzC,IAAI,CAAC,IAAI,CAAC,YAAY,IAAI,YAAY,YAAY,MAAM,EAAE,CAAC;YACzD,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,SAAS,EAAE,GAAG,EAAE;gBACtC,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;gBACzB,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YACvB,CAAC,CAAC,CAAC;QACL,CAAC;QAED,6BAA6B;QAC7B,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE;YACrC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"base-socket-service.js","sourceRoot":"","sources":["../../src/base-socket-service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,YAAY,EAAC,MAAM,aAAa,CAAC;AACzC,OAAO,EAAC,MAAM,EAAC,MAAM,UAAU,CAAC;AAGhC,OAAO,EAAC,SAAS,EAAC,MAAM,iBAAiB,CAAC;AAE1C,MAAM,GAAG,GAAG,SAAS,CAAC,mBAAmB,CAAC,CAAC;AAE3C,MAAM,iBAAkB,SAAQ,YAAY;IAChC,aAAa,CAAS;IACtB,YAAY,GAAY,KAAK,CAAC;IAExC;;OAEG;IACH,YAAY,YAAoB;QAC9B,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,aAAa,GAAG,YAAY,CAAC;QAElC,6BAA6B;QAC7B,IAAI,CAAC,YAAY,GAAG,CAAC,YAAY,CAAC,UAAU,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC;QAExE,yCAAyC;QACzC,IAAI,CAAC,IAAI,CAAC,YAAY,IAAI,YAAY,YAAY,MAAM,EAAE,CAAC;YACzD,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,SAAS,EAAE,GAAG,EAAE;gBACtC,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;gBACzB,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YACvB,CAAC,CAAC,CAAC;QACL,CAAC;QAED,6BAA6B;QAC7B,6FAA6F;QAC7F,wFAAwF;QACxF,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE;YACrC,IAAI,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;gBACpC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;YAC1B,CAAC;iBAAM,CAAC;gBACN,GAAG,CAAC,KAAK,CAAC,2BAA2B,GAAG,EAAE,CAAC,CAAC;YAC9C,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE;YAClC,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;YAC1B,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACrB,CAAC,CAAC,CAAC;IACL,CAAC;IAED,4BAA4B,CAAC,GAAG,aAAyB;QACvD,KAAK,MAAM,GAAG,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,EAAE,CAAC;YACnC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE;gBAChC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;oBACtB,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;gBAC/B,CAAC,CAAC,CAAC;YACL,CAAC,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,KAAK;QACH,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,SAAS,EAAE,CAAC;YAClC,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE,CAAC;QAC3B,CAAC;IACH,CAAC;CACF;AAED,OAAO,EAAC,iBAAiB,EAAC,CAAC"}
|
package/package.json
CHANGED
|
@@ -2,6 +2,10 @@ import {EventEmitter} from 'node:events';
|
|
|
2
2
|
import {Socket} from 'node:net';
|
|
3
3
|
import {type Readable} from 'node:stream';
|
|
4
4
|
|
|
5
|
+
import {getLogger} from './lib/logger.js';
|
|
6
|
+
|
|
7
|
+
const log = getLogger('BaseSocketService');
|
|
8
|
+
|
|
5
9
|
class BaseSocketService extends EventEmitter {
|
|
6
10
|
protected _socketClient: Socket;
|
|
7
11
|
protected _isConnected: boolean = false;
|
|
@@ -25,8 +29,14 @@ class BaseSocketService extends EventEmitter {
|
|
|
25
29
|
}
|
|
26
30
|
|
|
27
31
|
// setup basic error handling
|
|
32
|
+
// Only re-emit if someone is listening, otherwise this throws (unhandled 'error') instead of
|
|
33
|
+
// just leaving the error on the underlying socket. Log it so it isn't silently dropped.
|
|
28
34
|
this._socketClient.on('error', (err) => {
|
|
29
|
-
this.
|
|
35
|
+
if (this.listenerCount('error') > 0) {
|
|
36
|
+
this.emit('error', err);
|
|
37
|
+
} else {
|
|
38
|
+
log.error(`Unhandled socket error: ${err}`);
|
|
39
|
+
}
|
|
30
40
|
});
|
|
31
41
|
|
|
32
42
|
this._socketClient.on('close', () => {
|