appium-ios-remotexpc 1.1.2 → 1.1.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
+ ## [1.1.3](https://github.com/appium/appium-ios-remotexpc/compare/v1.1.2...v1.1.3) (2026-05-06)
2
+
3
+ ### Bug Fixes
4
+
5
+ * Tune emitted events on the port forwarder ([#199](https://github.com/appium/appium-ios-remotexpc/issues/199)) ([d528f6e](https://github.com/appium/appium-ios-remotexpc/commit/d528f6e779e34371ba9ac980300f14b1eb779fe5))
6
+
1
7
  ## [1.1.2](https://github.com/appium/appium-ios-remotexpc/compare/v1.1.1...v1.1.2) (2026-05-03)
2
8
 
3
9
  ### Bug Fixes
@@ -24,7 +24,7 @@ export declare class DevicePortForwarder extends EventEmitter {
24
24
  on<K extends keyof DevicePortForwarderEvents>(eventName: K, listener: DevicePortForwarderEvents[K]): this;
25
25
  once<K extends keyof DevicePortForwarderEvents>(eventName: K, listener: DevicePortForwarderEvents[K]): this;
26
26
  off<K extends keyof DevicePortForwarderEvents>(eventName: K, listener: DevicePortForwarderEvents[K]): this;
27
- private handleLocalConnection;
27
+ private handleDownstreamConnection;
28
28
  private openUpstreamSocket;
29
29
  }
30
30
  //# sourceMappingURL=device-port-forwarder.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"device-port-forwarder.d.ts","sourceRoot":"","sources":["../../../../src/lib/port-forwarding/device-port-forwarder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAI3C,OAAO,KAAK,EACV,yBAAyB,EACzB,0BAA0B,EAE3B,MAAM,YAAY,CAAC;AAIpB;;;GAGG;AACH,qBAAa,mBAAoB,SAAQ,YAAY;IACnD,OAAO,CAAC,MAAM,CAAC,CAAS;IACxB,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;IACnC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;IACpC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAS;IAC9B,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAA0B;IAC3D,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAC,CAA0B;IAC7D,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAqB;gBAGjD,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,0BAA0B;IAUrC;;OAEG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAgB5B;;OAEG;IACG,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAmBlB,EAAE,CAAC,CAAC,SAAS,MAAM,yBAAyB,EACnD,SAAS,EAAE,CAAC,EACZ,QAAQ,EAAE,yBAAyB,CAAC,CAAC,CAAC,GACrC,IAAI;IAOE,IAAI,CAAC,CAAC,SAAS,MAAM,yBAAyB,EACrD,SAAS,EAAE,CAAC,EACZ,QAAQ,EAAE,yBAAyB,CAAC,CAAC,CAAC,GACrC,IAAI;IAOE,GAAG,CAAC,CAAC,SAAS,MAAM,yBAAyB,EACpD,SAAS,EAAE,CAAC,EACZ,QAAQ,EAAE,yBAAyB,CAAC,CAAC,CAAC,GACrC,IAAI;YAOO,qBAAqB;YAgDrB,kBAAkB;CAUjC"}
1
+ {"version":3,"file":"device-port-forwarder.d.ts","sourceRoot":"","sources":["../../../../src/lib/port-forwarding/device-port-forwarder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAI3C,OAAO,KAAK,EACV,yBAAyB,EACzB,0BAA0B,EAE3B,MAAM,YAAY,CAAC;AAIpB;;;GAGG;AACH,qBAAa,mBAAoB,SAAQ,YAAY;IACnD,OAAO,CAAC,MAAM,CAAC,CAAS;IACxB,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;IACnC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;IACpC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAS;IAC9B,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAA0B;IAC3D,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAC,CAA0B;IAC7D,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAqB;gBAGjD,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,0BAA0B;IAUrC;;OAEG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAgB5B;;OAEG;IACG,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAmBlB,EAAE,CAAC,CAAC,SAAS,MAAM,yBAAyB,EACnD,SAAS,EAAE,CAAC,EACZ,QAAQ,EAAE,yBAAyB,CAAC,CAAC,CAAC,GACrC,IAAI;IAOE,IAAI,CAAC,CAAC,SAAS,MAAM,yBAAyB,EACrD,SAAS,EAAE,CAAC,EACZ,QAAQ,EAAE,yBAAyB,CAAC,CAAC,CAAC,GACrC,IAAI;IAOE,GAAG,CAAC,CAAC,SAAS,MAAM,yBAAyB,EACpD,SAAS,EAAE,CAAC,EACZ,QAAQ,EAAE,yBAAyB,CAAC,CAAC,CAAC,GACrC,IAAI;YAOO,0BAA0B;YA4D1B,kBAAkB;CAUjC"}
@@ -30,7 +30,7 @@ export class DevicePortForwarder extends EventEmitter {
30
30
  return;
31
31
  }
32
32
  this.server = createServer((localSocket) => {
33
- void this.handleLocalConnection(localSocket);
33
+ void this.handleDownstreamConnection(localSocket);
34
34
  });
35
35
  await new Promise((resolve, reject) => {
36
36
  this.server?.once('error', reject);
@@ -66,21 +66,18 @@ export class DevicePortForwarder extends EventEmitter {
66
66
  off(eventName, listener) {
67
67
  return super.off(eventName, listener);
68
68
  }
69
- async handleLocalConnection(localSocket) {
69
+ async handleDownstreamConnection(localSocket) {
70
70
  this.activeSockets.add(localSocket);
71
71
  this.emit('clientConnected', localSocket);
72
- localSocket.once('close', () => {
73
- this.activeSockets.delete(localSocket);
74
- this.emit('clientDisconnected', localSocket);
75
- });
76
72
  let upstreamSocket;
77
73
  try {
78
74
  upstreamSocket = await this.openUpstreamSocket();
79
75
  }
80
76
  catch (err) {
77
+ this.activeSockets.delete(localSocket);
81
78
  log.debug(`Failed to open upstream socket for device port ${this.devicePort}: ${err}`);
82
79
  this.emit('upstreamConnectError', err);
83
- this.emit('error', err);
80
+ this.emit('clientDisconnected', localSocket, err);
84
81
  localSocket.destroy();
85
82
  return;
86
83
  }
@@ -88,6 +85,8 @@ export class DevicePortForwarder extends EventEmitter {
88
85
  this.emit('upstreamConnected', upstreamSocket);
89
86
  let cleanedUp = false;
90
87
  const teardown = () => {
88
+ this.activeSockets.delete(localSocket);
89
+ this.activeSockets.delete(upstreamSocket);
91
90
  if (cleanedUp) {
92
91
  return;
93
92
  }
@@ -96,14 +95,25 @@ export class DevicePortForwarder extends EventEmitter {
96
95
  upstreamSocket.unpipe(localSocket);
97
96
  localSocket.destroy();
98
97
  upstreamSocket.destroy();
99
- this.activeSockets.delete(localSocket);
100
- this.activeSockets.delete(upstreamSocket);
101
- this.emit('upstreamDisconnected', upstreamSocket);
102
98
  };
103
- localSocket.once('close', teardown);
104
- localSocket.once('error', teardown);
105
- upstreamSocket.once('close', teardown);
106
- upstreamSocket.once('error', teardown);
99
+ let clientError;
100
+ localSocket.once('error', (err) => {
101
+ clientError = err;
102
+ teardown();
103
+ });
104
+ localSocket.once('close', () => {
105
+ this.emit('clientDisconnected', localSocket, clientError);
106
+ teardown();
107
+ });
108
+ let upstreamError;
109
+ upstreamSocket.once('error', (err) => {
110
+ upstreamError = err;
111
+ teardown();
112
+ });
113
+ upstreamSocket.once('close', () => {
114
+ this.emit('upstreamDisconnected', upstreamSocket, upstreamError);
115
+ teardown();
116
+ });
107
117
  localSocket.pipe(upstreamSocket);
108
118
  upstreamSocket.pipe(localSocket);
109
119
  }
@@ -1 +1 @@
1
- {"version":3,"file":"device-port-forwarder.js","sourceRoot":"","sources":["../../../../src/lib/port-forwarding/device-port-forwarder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAkB,YAAY,EAAE,MAAM,UAAU,CAAC;AAExD,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAOzC,MAAM,GAAG,GAAG,SAAS,CAAC,gBAAgB,CAAC,CAAC;AAExC;;;GAGG;AACH,MAAM,OAAO,mBAAoB,SAAQ,YAAY;IAC3C,MAAM,CAAU;IACP,SAAS,CAAS;IAClB,UAAU,CAAS;IACnB,IAAI,CAAS;IACb,gBAAgB,CAA0B;IAC1C,iBAAiB,CAA2B;IAC5C,aAAa,GAAG,IAAI,GAAG,EAAU,CAAC;IAEnD,YACE,SAAiB,EACjB,UAAkB,EAClB,OAAmC;QAEnC,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,IAAI,WAAW,CAAC;QACxC,IAAI,CAAC,gBAAgB,GAAG,OAAO,CAAC,gBAAgB,CAAC;QACjD,IAAI,CAAC,iBAAiB,GAAG,OAAO,CAAC,iBAAiB,CAAC;IACrD,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,KAAK;QACT,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAChB,OAAO;QACT,CAAC;QAED,IAAI,CAAC,MAAM,GAAG,YAAY,CAAC,CAAC,WAAmB,EAAE,EAAE;YACjD,KAAK,IAAI,CAAC,qBAAqB,CAAC,WAAW,CAAC,CAAC;QAC/C,CAAC,CAAC,CAAC;QAEH,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YAC1C,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;YACnC,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QAC1D,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IACvB,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,IAAI;QACR,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QAC/C,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC;QAC3B,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;YAC7B,MAAM,CAAC,OAAO,EAAE,CAAC;QACnB,CAAC;QAED,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;YACjB,OAAO;QACT,CAAC;QAED,MAAM,aAAa,GAAG,IAAI,CAAC,MAAM,CAAC;QAClC,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC;QACxB,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YAC1C,aAAa,CAAC,KAAK,CAAC,CAAC,GAAW,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;QACxE,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IACvB,CAAC;IAEQ,EAAE,CACT,SAAY,EACZ,QAAsC;QAEtC,OAAO,KAAK,CAAC,EAAE,CACb,SAAS,EACT,QAAwC,CACjC,CAAC;IACZ,CAAC;IAEQ,IAAI,CACX,SAAY,EACZ,QAAsC;QAEtC,OAAO,KAAK,CAAC,IAAI,CACf,SAAS,EACT,QAAwC,CACjC,CAAC;IACZ,CAAC;IAEQ,GAAG,CACV,SAAY,EACZ,QAAsC;QAEtC,OAAO,KAAK,CAAC,GAAG,CACd,SAAS,EACT,QAAwC,CACjC,CAAC;IACZ,CAAC;IAEO,KAAK,CAAC,qBAAqB,CAAC,WAAmB;QACrD,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;QACpC,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE,WAAW,CAAC,CAAC;QAC1C,WAAW,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,EAAE;YAC7B,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;YACvC,IAAI,CAAC,IAAI,CAAC,oBAAoB,EAAE,WAAW,CAAC,CAAC;QAC/C,CAAC,CAAC,CAAC;QAEH,IAAI,cAAkC,CAAC;QACvC,IAAI,CAAC;YACH,cAAc,GAAG,MAAM,IAAI,CAAC,kBAAkB,EAAE,CAAC;QACnD,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,GAAG,CAAC,KAAK,CACP,kDAAkD,IAAI,CAAC,UAAU,KAAK,GAAG,EAAE,CAC5E,CAAC;YACF,IAAI,CAAC,IAAI,CAAC,sBAAsB,EAAE,GAAG,CAAC,CAAC;YACvC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;YACxB,WAAW,CAAC,OAAO,EAAE,CAAC;YACtB,OAAO;QACT,CAAC;QAED,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;QACvC,IAAI,CAAC,IAAI,CAAC,mBAAmB,EAAE,cAAc,CAAC,CAAC;QAE/C,IAAI,SAAS,GAAG,KAAK,CAAC;QACtB,MAAM,QAAQ,GAAG,GAAS,EAAE;YAC1B,IAAI,SAAS,EAAE,CAAC;gBACd,OAAO;YACT,CAAC;YACD,SAAS,GAAG,IAAI,CAAC;YACjB,WAAW,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;YACnC,cAAc,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;YACnC,WAAW,CAAC,OAAO,EAAE,CAAC;YACtB,cAAc,CAAC,OAAO,EAAE,CAAC;YACzB,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;YACvC,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;YAC1C,IAAI,CAAC,IAAI,CAAC,sBAAsB,EAAE,cAAc,CAAC,CAAC;QACpD,CAAC,CAAC;QAEF,WAAW,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;QACpC,WAAW,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;QACpC,cAAc,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;QACvC,cAAc,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;QAEvC,WAAW,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QACjC,cAAc,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IACnC,CAAC;IAEO,KAAK,CAAC,kBAAkB;QAC9B,IAAI,CAAC;YACH,OAAO,MAAM,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACvC,CAAC;QAAC,OAAO,YAAY,EAAE,CAAC;YACtB,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE,CAAC;gBAC5B,MAAM,YAAY,CAAC;YACrB,CAAC;QACH,CAAC;QACD,OAAO,MAAM,IAAI,CAAC,iBAAiB,EAAE,CAAC;IACxC,CAAC;CACF"}
1
+ {"version":3,"file":"device-port-forwarder.js","sourceRoot":"","sources":["../../../../src/lib/port-forwarding/device-port-forwarder.ts"],"names":[],"mappings":"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"}
@@ -29,10 +29,11 @@ export interface DevicePortForwarderEvents {
29
29
  started: () => void;
30
30
  stopped: () => void;
31
31
  clientConnected: (socket: Socket) => void;
32
- clientDisconnected: (socket: Socket) => void;
32
+ clientDisconnected: (socket: Socket, error?: Error) => void;
33
33
  upstreamConnected: (socket: Socket) => void;
34
- upstreamDisconnected: (socket: Socket) => void;
34
+ upstreamDisconnected: (socket: Socket, error?: Error) => void;
35
35
  upstreamConnectError: (error: unknown) => void;
36
+ /** @deprecated Not used, will be removed in the next major version. */
36
37
  error: (error: unknown) => void;
37
38
  }
38
39
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/lib/port-forwarding/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAEvC;;GAEG;AACH,MAAM,MAAM,uBAAuB,GAAG,MAAM,OAAO,CAAC,MAAM,CAAC,CAAC;AAE5D;;GAEG;AACH,MAAM,MAAM,uBAAuB,GAAG,CACpC,IAAI,EAAE,MAAM,EACZ,UAAU,EAAE,MAAM,EAClB,gBAAgB,CAAC,EAAE,MAAM,KACtB,OAAO,CAAC,MAAM,CAAC,CAAC;AAErB;;GAEG;AACH,MAAM,WAAW,0BAA0B;IACzC,mDAAmD;IACnD,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,0EAA0E;IAC1E,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B;;OAEG;IACH,gBAAgB,EAAE,uBAAuB,CAAC;IAC1C;;;OAGG;IACH,iBAAiB,CAAC,EAAE,uBAAuB,CAAC;CAC7C;AAED,MAAM,WAAW,yBAAyB;IACxC,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,eAAe,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IAC1C,kBAAkB,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IAC7C,iBAAiB,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IAC5C,oBAAoB,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IAC/C,oBAAoB,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;IAC/C,KAAK,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;CACjC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/lib/port-forwarding/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAEvC;;GAEG;AACH,MAAM,MAAM,uBAAuB,GAAG,MAAM,OAAO,CAAC,MAAM,CAAC,CAAC;AAE5D;;GAEG;AACH,MAAM,MAAM,uBAAuB,GAAG,CACpC,IAAI,EAAE,MAAM,EACZ,UAAU,EAAE,MAAM,EAClB,gBAAgB,CAAC,EAAE,MAAM,KACtB,OAAO,CAAC,MAAM,CAAC,CAAC;AAErB;;GAEG;AACH,MAAM,WAAW,0BAA0B;IACzC,mDAAmD;IACnD,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,0EAA0E;IAC1E,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B;;OAEG;IACH,gBAAgB,EAAE,uBAAuB,CAAC;IAC1C;;;OAGG;IACH,iBAAiB,CAAC,EAAE,uBAAuB,CAAC;CAC7C;AAED,MAAM,WAAW,yBAAyB;IACxC,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,eAAe,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IAC1C,kBAAkB,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,KAAK,KAAK,IAAI,CAAC;IAC5D,iBAAiB,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IAC5C,oBAAoB,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,KAAK,KAAK,IAAI,CAAC;IAC9D,oBAAoB,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;IAC/C,uEAAuE;IACvE,KAAK,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;CACjC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "appium-ios-remotexpc",
3
- "version": "1.1.2",
3
+ "version": "1.1.3",
4
4
  "main": "build/src/index.js",
5
5
  "types": "build/src/index.d.ts",
6
6
  "type": "module",
@@ -45,7 +45,7 @@ export class DevicePortForwarder extends EventEmitter {
45
45
  }
46
46
 
47
47
  this.server = createServer((localSocket: Socket) => {
48
- void this.handleLocalConnection(localSocket);
48
+ void this.handleDownstreamConnection(localSocket);
49
49
  });
50
50
 
51
51
  await new Promise<void>((resolve, reject) => {
@@ -107,23 +107,20 @@ export class DevicePortForwarder extends EventEmitter {
107
107
  ) as this;
108
108
  }
109
109
 
110
- private async handleLocalConnection(localSocket: Socket): Promise<void> {
110
+ private async handleDownstreamConnection(localSocket: Socket): Promise<void> {
111
111
  this.activeSockets.add(localSocket);
112
112
  this.emit('clientConnected', localSocket);
113
- localSocket.once('close', () => {
114
- this.activeSockets.delete(localSocket);
115
- this.emit('clientDisconnected', localSocket);
116
- });
117
113
 
118
114
  let upstreamSocket: Socket | undefined;
119
115
  try {
120
116
  upstreamSocket = await this.openUpstreamSocket();
121
117
  } catch (err) {
118
+ this.activeSockets.delete(localSocket);
122
119
  log.debug(
123
120
  `Failed to open upstream socket for device port ${this.devicePort}: ${err}`,
124
121
  );
125
122
  this.emit('upstreamConnectError', err);
126
- this.emit('error', err);
123
+ this.emit('clientDisconnected', localSocket, err);
127
124
  localSocket.destroy();
128
125
  return;
129
126
  }
@@ -133,23 +130,38 @@ export class DevicePortForwarder extends EventEmitter {
133
130
 
134
131
  let cleanedUp = false;
135
132
  const teardown = (): void => {
133
+ this.activeSockets.delete(localSocket);
134
+ this.activeSockets.delete(upstreamSocket);
135
+
136
136
  if (cleanedUp) {
137
137
  return;
138
138
  }
139
139
  cleanedUp = true;
140
+
140
141
  localSocket.unpipe(upstreamSocket);
141
142
  upstreamSocket.unpipe(localSocket);
142
143
  localSocket.destroy();
143
144
  upstreamSocket.destroy();
144
- this.activeSockets.delete(localSocket);
145
- this.activeSockets.delete(upstreamSocket);
146
- this.emit('upstreamDisconnected', upstreamSocket);
147
145
  };
148
146
 
149
- localSocket.once('close', teardown);
150
- localSocket.once('error', teardown);
151
- upstreamSocket.once('close', teardown);
152
- upstreamSocket.once('error', teardown);
147
+ let clientError: Error | undefined;
148
+ localSocket.once('error', (err) => {
149
+ clientError = err;
150
+ teardown();
151
+ });
152
+ localSocket.once('close', () => {
153
+ this.emit('clientDisconnected', localSocket, clientError);
154
+ teardown();
155
+ });
156
+ let upstreamError: Error | undefined;
157
+ upstreamSocket.once('error', (err) => {
158
+ upstreamError = err;
159
+ teardown();
160
+ });
161
+ upstreamSocket.once('close', () => {
162
+ this.emit('upstreamDisconnected', upstreamSocket, upstreamError);
163
+ teardown();
164
+ });
153
165
 
154
166
  localSocket.pipe(upstreamSocket);
155
167
  upstreamSocket.pipe(localSocket);
@@ -37,9 +37,10 @@ export interface DevicePortForwarderEvents {
37
37
  started: () => void;
38
38
  stopped: () => void;
39
39
  clientConnected: (socket: Socket) => void;
40
- clientDisconnected: (socket: Socket) => void;
40
+ clientDisconnected: (socket: Socket, error?: Error) => void;
41
41
  upstreamConnected: (socket: Socket) => void;
42
- upstreamDisconnected: (socket: Socket) => void;
42
+ upstreamDisconnected: (socket: Socket, error?: Error) => void;
43
43
  upstreamConnectError: (error: unknown) => void;
44
+ /** @deprecated Not used, will be removed in the next major version. */
44
45
  error: (error: unknown) => void;
45
46
  }