appium-ios-remotexpc 5.16.0 → 5.16.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.
package/CHANGELOG.md CHANGED
@@ -1,3 +1,15 @@
1
+ ## [5.16.2](https://github.com/appium/appium-ios-remotexpc/compare/v5.16.1...v5.16.2) (2026-08-27)
2
+
3
+ ### Bug Fixes
4
+
5
+ * **port-forwarding:** destroy upstream socket when client disconnects during connect ([#305](https://github.com/appium/appium-ios-remotexpc/issues/305)) ([957181d](https://github.com/appium/appium-ios-remotexpc/commit/957181d05a8ae4fdcfed7c0ddf73446408c5f444))
6
+
7
+ ## [5.16.1](https://github.com/appium/appium-ios-remotexpc/compare/v5.16.0...v5.16.1) (2026-08-27)
8
+
9
+ ### Bug Fixes
10
+
11
+ * **usbmux:** handle decoder errors and preserve unconsumed bytes on connect ([#304](https://github.com/appium/appium-ios-remotexpc/issues/304)) ([52db21c](https://github.com/appium/appium-ios-remotexpc/commit/52db21c748de050e294219358d7a9ed85688e960))
12
+
1
13
  ## [5.16.0](https://github.com/appium/appium-ios-remotexpc/compare/v5.15.5...v5.16.0) (2026-08-27)
2
14
 
3
15
  ### Features
@@ -25,6 +25,15 @@ export declare class DevicePortForwarder extends EventEmitter {
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
27
  private handleDownstreamConnection;
28
+ /**
29
+ * Opens the upstream socket while watching for the client going away.
30
+ * Returns undefined after cleanup if the connect fails or the client disconnected meanwhile.
31
+ */
32
+ private openUpstreamForClient;
33
+ /**
34
+ * Pipes the two sockets together and tears both down when either side closes or errors.
35
+ */
36
+ private bridgeSockets;
28
37
  private openUpstreamSocket;
29
38
  }
30
39
  //# 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,EAAC,YAAY,EAAC,MAAM,aAAa,CAAC;AAIzC,OAAO,KAAK,EAAC,yBAAyB,EAAE,0BAA0B,EAA0B,MAAM,YAAY,CAAC;AAE/G;;;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;gBAEvC,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,0BAA0B;IAStF;;OAEG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAgB5B;;OAEG;IACG,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAmBlB,EAAE,CAAC,CAAC,SAAS,MAAM,yBAAyB,EAAE,SAAS,EAAE,CAAC,EAAE,QAAQ,EAAE,yBAAyB,CAAC,CAAC,CAAC,GAAG,IAAI;IAIzG,IAAI,CAAC,CAAC,SAAS,MAAM,yBAAyB,EAAE,SAAS,EAAE,CAAC,EAAE,QAAQ,EAAE,yBAAyB,CAAC,CAAC,CAAC,GAAG,IAAI;IAI3G,GAAG,CAAC,CAAC,SAAS,MAAM,yBAAyB,EAAE,SAAS,EAAE,CAAC,EAAE,QAAQ,EAAE,yBAAyB,CAAC,CAAC,CAAC,GAAG,IAAI;YAIrG,0BAA0B;YAyD1B,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,EAAC,YAAY,EAAC,MAAM,aAAa,CAAC;AAIzC,OAAO,KAAK,EAAC,yBAAyB,EAAE,0BAA0B,EAA0B,MAAM,YAAY,CAAC;AAE/G;;;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;gBAEvC,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,0BAA0B;IAStF;;OAEG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAgB5B;;OAEG;IACG,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAmBlB,EAAE,CAAC,CAAC,SAAS,MAAM,yBAAyB,EAAE,SAAS,EAAE,CAAC,EAAE,QAAQ,EAAE,yBAAyB,CAAC,CAAC,CAAC,GAAG,IAAI;IAIzG,IAAI,CAAC,CAAC,SAAS,MAAM,yBAAyB,EAAE,SAAS,EAAE,CAAC,EAAE,QAAQ,EAAE,yBAAyB,CAAC,CAAC,CAAC,GAAG,IAAI;IAI3G,GAAG,CAAC,CAAC,SAAS,MAAM,yBAAyB,EAAE,SAAS,EAAE,CAAC,EAAE,QAAQ,EAAE,yBAAyB,CAAC,CAAC,CAAC,GAAG,IAAI;YAIrG,0BAA0B;IAcxC;;;OAGG;YACW,qBAAqB;IAqCnC;;OAEG;IACH,OAAO,CAAC,aAAa;YAwCP,kBAAkB;CAUjC"}
@@ -67,6 +67,29 @@ export class DevicePortForwarder extends EventEmitter {
67
67
  async handleDownstreamConnection(localSocket) {
68
68
  this.activeSockets.add(localSocket);
69
69
  this.emit('clientConnected', localSocket);
70
+ const upstreamSocket = await this.openUpstreamForClient(localSocket);
71
+ if (!upstreamSocket) {
72
+ return;
73
+ }
74
+ this.activeSockets.add(upstreamSocket);
75
+ this.emit('upstreamConnected', upstreamSocket);
76
+ this.bridgeSockets(localSocket, upstreamSocket);
77
+ }
78
+ /**
79
+ * Opens the upstream socket while watching for the client going away.
80
+ * Returns undefined after cleanup if the connect fails or the client disconnected meanwhile.
81
+ */
82
+ async openUpstreamForClient(localSocket) {
83
+ let clientError;
84
+ let clientClosed = false;
85
+ const onEarlyError = (err) => {
86
+ clientError = err;
87
+ };
88
+ const onEarlyClose = () => {
89
+ clientClosed = true;
90
+ };
91
+ localSocket.once('error', onEarlyError);
92
+ localSocket.once('close', onEarlyClose);
70
93
  let upstreamSocket;
71
94
  try {
72
95
  upstreamSocket = await this.openUpstreamSocket();
@@ -76,10 +99,25 @@ export class DevicePortForwarder extends EventEmitter {
76
99
  this.emit('upstreamConnectError', err);
77
100
  this.emit('clientDisconnected', localSocket, err);
78
101
  localSocket.destroy();
79
- return;
102
+ return undefined;
80
103
  }
81
- this.activeSockets.add(upstreamSocket);
82
- this.emit('upstreamConnected', upstreamSocket);
104
+ finally {
105
+ localSocket.off('error', onEarlyError);
106
+ localSocket.off('close', onEarlyClose);
107
+ }
108
+ if (clientClosed || localSocket.destroyed || clientError !== undefined) {
109
+ this.activeSockets.delete(localSocket);
110
+ this.emit('clientDisconnected', localSocket, clientError);
111
+ localSocket.destroy();
112
+ upstreamSocket.destroy();
113
+ return undefined;
114
+ }
115
+ return upstreamSocket;
116
+ }
117
+ /**
118
+ * Pipes the two sockets together and tears both down when either side closes or errors.
119
+ */
120
+ bridgeSockets(localSocket, upstreamSocket) {
83
121
  let cleanedUp = false;
84
122
  const teardown = () => {
85
123
  this.activeSockets.delete(localSocket);
@@ -1 +1 @@
1
- {"version":3,"file":"device-port-forwarder.js","sourceRoot":"","sources":["../../../../src/lib/port-forwarding/device-port-forwarder.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"device-port-forwarder.js","sourceRoot":"","sources":["../../../../src/lib/port-forwarding/device-port-forwarder.ts"],"names":[],"mappings":"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"}
@@ -24,7 +24,6 @@ export interface Device {
24
24
  export declare const USBMUXD_PORT = 27015;
25
25
  export declare const DEFAULT_USBMUXD_SOCKET = "/var/run/usbmuxd";
26
26
  export declare const DEFAULT_USBMUXD_HOST = "127.0.0.1";
27
- export declare const MAX_FRAME_SIZE: number;
28
27
  export declare const USBMUX_RESULT: {
29
28
  OK: number;
30
29
  BADCOMMAND: number;
@@ -45,7 +44,6 @@ export interface SocketOptions {
45
44
  */
46
45
  export declare class Usbmux extends BaseSocketService {
47
46
  private readonly _decoder;
48
- private readonly _splitter;
49
47
  private readonly _encoder;
50
48
  private _tag;
51
49
  private readonly _responseCallbacks;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/lib/usbmux/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/lib/usbmux/index.ts"],"names":[],"mappings":"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"}
@@ -4,7 +4,7 @@ import { release } from 'node:os';
4
4
  import { BaseSocketService } from '../../base-socket-service.js';
5
5
  import { getLogger } from '../logger.js';
6
6
  import { processPlistResponse } from '../pair-record/index.js';
7
- import { LengthBasedSplitter, parsePlist } from '../plist/index.js';
7
+ import { parsePlist } from '../plist/index.js';
8
8
  import { UsbmuxDecoder } from '../usbmux/usbmux-decoder.js';
9
9
  import { UsbmuxEncoder } from '../usbmux/usbmux-encoder.js';
10
10
  import { prioritizeUsbOverNetworkForDuplicateUdids } from './utils.js';
@@ -12,7 +12,6 @@ const log = getLogger('Usbmux');
12
12
  export const USBMUXD_PORT = 27015;
13
13
  export const DEFAULT_USBMUXD_SOCKET = '/var/run/usbmuxd';
14
14
  export const DEFAULT_USBMUXD_HOST = '127.0.0.1';
15
- export const MAX_FRAME_SIZE = 100 * 1024 * 1024; // 1MB
16
15
  // Result codes from usbmuxd
17
16
  export const USBMUX_RESULT = {
18
17
  OK: 0,
@@ -28,7 +27,6 @@ const CLIENT_VERSION_STRING = 'appium-internal-1.0.0';
28
27
  */
29
28
  export class Usbmux extends BaseSocketService {
30
29
  _decoder;
31
- _splitter;
32
30
  _encoder;
33
31
  _tag;
34
32
  _responseCallbacks;
@@ -39,15 +37,10 @@ export class Usbmux extends BaseSocketService {
39
37
  constructor(socketClient) {
40
38
  super(socketClient);
41
39
  this._decoder = new UsbmuxDecoder();
42
- this._splitter = new LengthBasedSplitter({
43
- readableStream: socketClient,
44
- littleEndian: true,
45
- maxFrameLength: MAX_FRAME_SIZE,
46
- lengthFieldOffset: 0,
47
- lengthFieldLength: 4,
48
- lengthAdjustment: 0,
49
- });
50
40
  this._socketClient.pipe(this._decoder);
41
+ this._decoder.on('error', (err) => {
42
+ log.error(`Usbmux decoder error: ${err.message}`);
43
+ });
51
44
  this._encoder = new UsbmuxEncoder();
52
45
  this._encoder.pipe(this._socketClient);
53
46
  this._assignClientFailureHandlers(this._encoder);
@@ -160,20 +153,16 @@ export class Usbmux extends BaseSocketService {
160
153
  }
161
154
  if (data.payload.Number === USBMUX_RESULT.OK) {
162
155
  // Detach constructor-owned consumers from the raw socket so the caller
163
- // gets full byte-stream ownership. Leaving the splitter/decoder attached
164
- // lets their unread buffers grow, eventually applying backpressure that
165
- // stalls long-lived forwards.
166
- //
167
- // Order matters: unpipe() must happen before removeAllListeners() /
168
- // shutdown(). Removing listeners first breaks Node's pipe cleanup, leaving
169
- // orphaned source listeners that continue pushing bytes into detached
170
- // streams and eventually stall the socket.
171
- this._socketClient.unpipe(this._splitter);
172
- this._splitter.unpipe(this._decoder);
156
+ // gets full byte-stream ownership.
173
157
  this._socketClient.unpipe(this._decoder);
174
158
  this._encoder.unpipe(this._socketClient);
175
- this._splitter.shutdown();
176
159
  this._decoder.removeAllListeners('data');
160
+ // Hand any unconsumed bytes back to the raw socket stream so the caller
161
+ // receives them immediately when attaching listeners.
162
+ const pending = this._decoder.buffer;
163
+ if (pending.length > 0) {
164
+ this._socketClient.unshift(pending);
165
+ }
177
166
  return this._socketClient;
178
167
  }
179
168
  else if (data.payload.Number === USBMUX_RESULT.CONNREFUSED) {
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/lib/usbmux/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,MAAM,EAAC,MAAM,kBAAkB,CAAC;AACxC,OAAO,EAA2B,gBAAgB,EAAE,YAAY,EAAC,MAAM,UAAU,CAAC;AAClF,OAAO,EAAC,OAAO,EAAC,MAAM,SAAS,CAAC;AAEhC,OAAO,EAAC,iBAAiB,EAAC,MAAM,8BAA8B,CAAC;AAC/D,OAAO,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AACvC,OAAO,EAAkB,oBAAoB,EAAC,MAAM,yBAAyB,CAAC;AAE9E,OAAO,EAAC,mBAAmB,EAAE,UAAU,EAAC,MAAM,mBAAmB,CAAC;AAElE,OAAO,EAAqB,aAAa,EAAC,MAAM,6BAA6B,CAAC;AAC9E,OAAO,EAAC,aAAa,EAAC,MAAM,6BAA6B,CAAC;AAC1D,OAAO,EAAC,yCAAyC,EAAC,MAAM,YAAY,CAAC;AAwBrE,MAAM,GAAG,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAC;AAEhC,MAAM,CAAC,MAAM,YAAY,GAAG,KAAK,CAAC;AAClC,MAAM,CAAC,MAAM,sBAAsB,GAAG,kBAAkB,CAAC;AACzD,MAAM,CAAC,MAAM,oBAAoB,GAAG,WAAW,CAAC;AAChD,MAAM,CAAC,MAAM,cAAc,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,CAAC,CAAC,MAAM;AAEvD,4BAA4B;AAC5B,MAAM,CAAC,MAAM,aAAa,GAAG;IAC3B,EAAE,EAAE,CAAC;IACL,UAAU,EAAE,CAAC;IACb,MAAM,EAAE,CAAC;IACT,WAAW,EAAE,CAAC;CACf,CAAC;AAEF,yCAAyC;AACzC,MAAM,SAAS,GAAG,iBAAiB,CAAC;AACpC,MAAM,qBAAqB,GAAG,uBAAuB,CAAC;AAYtD;;GAEG;AACH,MAAM,OAAO,MAAO,SAAQ,iBAAiB;IAC1B,QAAQ,CAAgB;IACxB,SAAS,CAAsB;IAC/B,QAAQ,CAAgB;IACjC,IAAI,CAAS;IACJ,kBAAkB,CAAgD;IAEnF;;;OAGG;IACH,YAAY,YAAoB;QAC9B,KAAK,CAAC,YAAY,CAAC,CAAC;QAEpB,IAAI,CAAC,QAAQ,GAAG,IAAI,aAAa,EAAE,CAAC;QACpC,IAAI,CAAC,SAAS,GAAG,IAAI,mBAAmB,CAAC;YACvC,cAAc,EAAE,YAAY;YAC5B,YAAY,EAAE,IAAI;YAClB,cAAc,EAAE,cAAc;YAC9B,iBAAiB,EAAE,CAAC;YACpB,iBAAiB,EAAE,CAAC;YACpB,gBAAgB,EAAE,CAAC;SACpB,CAAC,CAAC;QAEH,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAEvC,IAAI,CAAC,QAAQ,GAAG,IAAI,aAAa,EAAE,CAAC;QACpC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QACvC,IAAI,CAAC,4BAA4B,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAEjD,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC;QACd,IAAI,CAAC,kBAAkB,GAAG,EAAE,CAAC;QAC7B,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QAEtD,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAU,EAAE,EAAE;YAC9B,GAAG,CAAC,KAAK,CAAC,wBAAwB,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;QACnD,CAAC,CAAC,CAAC;IACL,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,QAAQ,CAAC,OAAO,GAAG,IAAI;QAC3B,MAAM,EAAC,GAAG,EAAE,cAAc,EAAC,GAAG,IAAI,CAAC,oBAAoB,CAAS,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE;YAChF,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;gBACtB,OAAO,IAAI,CAAC,OAAO,CAAC,IAAc,CAAC;YACrC,CAAC;YACD,MAAM,IAAI,KAAK,CAAC,oBAAoB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC9D,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,UAAU,CAAC;YACd,GAAG;YACH,OAAO,EAAE;gBACP,WAAW,EAAE,UAAU;gBACvB,QAAQ,EAAE,SAAS;gBACnB,mBAAmB,EAAE,qBAAqB;aAC3C;SACF,CAAC,CAAC;QAEH,OAAO,MAAM,cAAc,CAAC;IAC9B,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,cAAc,CAAC,IAAY,EAAE,OAAO,GAAG,IAAI;QAC/C,6CAA6C;QAC7C,MAAM,EAAC,GAAG,EAAE,cAAc,EAAC,GAAG,IAAI,CAAC,oBAAoB,CAAoB,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE;YAC3F,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE,CAAC;gBACjC,OAAO,IAAI,CAAC;YACd,CAAC;YACD,IAAI,CAAC;gBACH,4CAA4C;gBAC5C,OAAO,oBAAoB,CACzB,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,cAAwB,CAAqC,CACtF,CAAC;YACJ,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACX,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC,EAAE,EAAE;oBACxD,KAAK,EAAE,CAAC;iBACT,CAAC,CAAC;YACL,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,UAAU,CAAC;YACd,GAAG;YACH,OAAO,EAAE;gBACP,WAAW,EAAE,gBAAgB;gBAC7B,YAAY,EAAE,IAAI;gBAClB,QAAQ,EAAE,SAAS;gBACnB,mBAAmB,EAAE,qBAAqB;aAC3C;SACF,CAAC,CAAC;QAEH,OAAO,MAAM,cAAc,CAAC;IAC9B,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,WAAW,CAAC,OAAO,GAAG,IAAI;QAC9B,MAAM,EAAC,GAAG,EAAE,cAAc,EAAC,GAAG,IAAI,CAAC,oBAAoB,CAAW,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE;YAClF,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC;gBAC5B,OAAO,IAAI,CAAC,OAAO,CAAC,UAAiC,CAAC;YACxD,CAAC;YACD,MAAM,IAAI,KAAK,CAAC,oBAAoB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC9D,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,UAAU,CAAC;YACd,GAAG;YACH,OAAO,EAAE;gBACP,WAAW,EAAE,aAAa;gBAC1B,QAAQ,EAAE,SAAS;gBACnB,mBAAmB,EAAE,qBAAqB;aAC3C;SACF,CAAC,CAAC;QAEH,MAAM,OAAO,GAAG,MAAM,cAAc,CAAC;QACrC,OAAO,yCAAyC,CAAC,OAAO,CAAC,CAAC;IAC5D,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,UAAU,CAAC,IAAY,EAAE,OAAO,GAAG,IAAI;QAC3C,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;QAChD,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,YAAY,KAAK,IAAI,CAAC,CAAC;IAC3E,CAAC;IAED;;;;;;OAMG;IACH,KAAK,CAAC,OAAO,CAAC,QAAyB,EAAE,IAAY,EAAE,OAAO,GAAG,IAAI;QACnE,MAAM,EAAC,GAAG,EAAE,cAAc,EAAC,GAAG,IAAI,CAAC,oBAAoB,CAAS,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE;YAChF,IAAI,IAAI,CAAC,OAAO,CAAC,WAAW,KAAK,QAAQ,EAAE,CAAC;gBAC1C,MAAM,IAAI,KAAK,CAAC,oBAAoB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAC9D,CAAC;YAED,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,KAAK,aAAa,CAAC,EAAE,EAAE,CAAC;gBAC7C,uEAAuE;gBACvE,yEAAyE;gBACzE,wEAAwE;gBACxE,8BAA8B;gBAC9B,EAAE;gBACF,oEAAoE;gBACpE,2EAA2E;gBAC3E,sEAAsE;gBACtE,2CAA2C;gBAC3C,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;gBAC1C,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;gBACrC,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;gBACzC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;gBACzC,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC;gBAC1B,IAAI,CAAC,QAAQ,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC;gBACzC,OAAO,IAAI,CAAC,aAAa,CAAC;YAC5B,CAAC;iBAAM,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,KAAK,aAAa,CAAC,WAAW,EAAE,CAAC;gBAC7D,MAAM,IAAI,KAAK,CAAC,kCAAkC,IAAI,EAAE,CAAC,CAAC;YAC5D,CAAC;iBAAM,CAAC;gBACN,MAAM,IAAI,KAAK,CAAC,+BAA+B,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;YACxE,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,UAAU,CAAC;YACd,GAAG;YACH,OAAO,EAAE;gBACP,WAAW,EAAE,SAAS;gBACtB,QAAQ,EAAE,SAAS;gBACnB,mBAAmB,EAAE,qBAAqB;gBAC1C,QAAQ,EAAE,QAAQ;gBAClB,UAAU,EAAE,UAAU,CAAC,IAAI,CAAC;aAC7B;SACF,CAAC,CAAC;QAEH,OAAO,MAAM,cAAc,CAAC;IAC9B,CAAC;IAED;;;;;;;OAOG;IACH,KAAK;QACH,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACrC,kDAAkD;YAClD,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,SAAS,EAAE,CAAC;gBAClC,MAAM,OAAO,GAAG,CAAC,GAAW,EAAE,EAAE;oBAC9B,IAAI,GAAG,EAAE,CAAC;wBACR,GAAG,CAAC,KAAK,CAAC,gCAAgC,GAAG,EAAE,CAAC,CAAC;wBACjD,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,CAAC;wBAC7B,MAAM,CAAC,GAAG,CAAC,CAAC;oBACd,CAAC;yBAAM,CAAC;wBACN,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,CAAC;wBAC7B,OAAO,EAAE,CAAC;oBACZ,CAAC;gBACH,CAAC,CAAC;gBACF,sDAAsD;gBACtD,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;YAClC,CAAC;iBAAM,CAAC;gBACN,OAAO,EAAE,CAAC;YACZ,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAED;;;;OAIG;IACK,WAAW,CAAC,IAAmB;QACrC,MAAM,OAAO,GAAG,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACzD,IAAI,OAAO,EAAE,CAAC;YACZ,OAAO,CAAC,IAAI,CAAC,CAAC;QAChB,CAAC;IACH,CAAC;IAED;;;;OAIG;IACK,UAAU,CAAC,IAA6C;QAC9D,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC5B,CAAC;IAED;;;;;;OAMG;IACK,oBAAoB,CAC1B,OAAO,GAAG,IAAI,EACd,gBAA4C;QAE5C,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;QACxB,IAAI,SAAqC,CAAC;QAC1C,MAAM,cAAc,GAAG,CAAC,KAAK,IAAgB,EAAE;YAC7C,IAAI,CAAC;gBACH,OAAO,MAAM,IAAI,OAAO,CAAI,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;oBAC9C,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE;wBACtC,IAAI,SAAS,EAAE,CAAC;4BACd,YAAY,CAAC,SAAS,CAAC,CAAC;wBAC1B,CAAC;wBACD,IAAI,CAAC;4BACH,uBAAuB;4BACvB,OAAO,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC;wBAClC,CAAC;wBAAC,OAAO,CAAC,EAAE,CAAC;4BACX,MAAM,CAAC,CAAC,CAAC,CAAC;wBACZ,CAAC;oBACH,CAAC,CAAC;oBAEF,0BAA0B;oBAC1B,SAAS,GAAG,UAAU,CAAC,GAAG,EAAE;wBAC1B,GAAG,CAAC,IAAI,CAAC,yCAAyC,GAAG,UAAU,OAAO,IAAI,CAAC,CAAC;wBAC5E,MAAM,CACJ,IAAI,KAAK,CACP,kDAAkD,OAAO,+CAA+C,CACzG,CACF,CAAC;oBACJ,CAAC,EAAE,OAAO,CAAC,CAAC;gBACd,CAAC,CAAC,CAAC;YACL,CAAC;oBAAS,CAAC;gBACT,IAAI,SAAS,EAAE,CAAC;oBACd,YAAY,CAAC,SAAS,CAAC,CAAC;gBAC1B,CAAC;gBACD,OAAO,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAC;YACtC,CAAC;QACH,CAAC,CAAC,EAAE,CAAC;QAEL,OAAO,EAAC,GAAG,EAAE,cAAc,EAAC,CAAC;IAC/B,CAAC;CACF;AAED;;GAEG;AACH,MAAM,OAAO,YAAY;IACN,QAAQ,CAAkB;IAC1B,UAAU,CAAS;IAC5B,SAAS,CAAS;IAClB,YAAY,CAAgB;IAC5B,MAAM,CAAgB;IAE9B;;;;;;OAMG;IACH,YAAY,QAAyB,EAAE,UAAkB,EAAE,YAAoB,CAAC;QAC9E,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;QACzB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;IACrB,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,KAAK;QACT,GAAG,CAAC,IAAI,CAAC,4BAA4B,IAAI,CAAC,QAAQ,YAAY,IAAI,CAAC,UAAU,KAAK,CAAC,CAAC;QAEpF,qDAAqD;QACrD,MAAM,MAAM,GAAG,MAAM,YAAY,EAAE,CAAC;QACpC,IAAI,CAAC,YAAY,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;QAEzE,0BAA0B;QAC1B,IAAI,CAAC,MAAM,GAAG,YAAY,CAAC,CAAC,WAAmB,EAAE,EAAE;YACjD,GAAG,CAAC,KAAK,CAAC,qCAAqC,CAAC,CAAC;YAEjD,2EAA2E;YAC3E,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;gBACtB,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;YACxD,CAAC;YAED,uBAAuB;YACvB,WAAW,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE;gBAC3B,GAAG,CAAC,KAAK,CAAC,gDAAgD,CAAC,CAAC;YAC9D,CAAC,CAAC,CAAC;YAEH,WAAW,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAU,EAAE,EAAE;gBACrC,GAAG,CAAC,KAAK,CAAC,uBAAuB,GAAG,EAAE,CAAC,CAAC;YAC1C,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,mBAAmB;QACnB,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YAC1C,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;gBACjB,OAAO,MAAM,CAAC,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC,CAAC;YACrD,CAAC;YAED,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,GAAG,EAAE;gBACtC,qFAAqF;gBACrF,kBAAkB;gBAClB,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,EAAE,OAAO,EAAE,CAAC;gBACvC,IAAI,OAAO,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE,CAAC;oBAC3C,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC;gBAChC,CAAC;gBACD,GAAG,CAAC,IAAI,CAAC,qCAAqC,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC;gBAChE,OAAO,EAAE,CAAC;YACZ,CAAC,CAAC,CAAC;YAEH,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAU,EAAE,EAAE;gBACrC,MAAM,CAAC,GAAG,CAAC,CAAC;YACd,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,OAAO;QACX,OAAO,IAAI,OAAO,CAAS,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YAC7C,MAAM,MAAM,GAAG,gBAAgB,CAAC,EAAC,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,EAAC,EAAE,GAAG,EAAE;gBAC9E,GAAG,CAAC,KAAK,CAAC,uCAAuC,CAAC,CAAC;gBACnD,OAAO,CAAC,MAAM,CAAC,CAAC;YAClB,CAAC,CAAC,CAAC;YAEH,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAU,EAAE,EAAE;gBAChC,MAAM,CAAC,GAAG,CAAC,CAAC;YACd,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,IAAI;QACR,OAAO,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YAC3C,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;gBAChB,MAAM,OAAO,GAAG,CAAC,GAAW,EAAE,EAAE;oBAC9B,IAAI,GAAG,EAAE,CAAC;wBACR,GAAG,CAAC,KAAK,CAAC,gCAAgC,GAAG,EAAE,CAAC,CAAC;wBACjD,MAAM,CAAC,GAAG,CAAC,CAAC;oBACd,CAAC;yBAAM,CAAC;wBACN,GAAG,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;wBACjC,OAAO,EAAE,CAAC;oBACZ,CAAC;gBACH,CAAC,CAAC;gBACF,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YAC7B,CAAC;iBAAM,CAAC;gBACN,OAAO,EAAE,CAAC;YACZ,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC;CACF;AAED;;;GAGG;AACH,MAAM,UAAU,UAAU,CAAC,KAAa;IACtC,OAAO,CAAC,CAAC,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;AACvD,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,OAA+B,EAAE;IACtE,MAAM,QAAQ,GAAG;QACf,UAAU,EAAE,sBAAsB;QAClC,UAAU,EAAE,YAAY;QACxB,UAAU,EAAE,oBAAoB;QAChC,OAAO,EAAE,IAAI;KACd,CAAC;IAEF,IAAI,OAAO,CAAC,GAAG,CAAC,sBAAsB,IAAI,CAAC,IAAI,CAAC,UAAU,IAAI,CAAC,IAAI,CAAC,UAAU,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;QACnG,GAAG,CAAC,KAAK,CACP,wEAAwE,OAAO,CAAC,GAAG,CAAC,sBAAsB,EAAE,CAC7G,CAAC;QACF,+DAA+D;QAC/D,MAAM,oBAAoB,GAAG,OAAO,CAAC,GAAG,CAAC,sBAAsB,CAAC,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;QACzF,MAAM,CAAC,EAAE,EAAE,IAAI,CAAC,GAAG,oBAAoB,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACnD,IAAI,EAAE,IAAI,IAAI,EAAE,CAAC;YACf,QAAQ,CAAC,UAAU,GAAG,EAAE,CAAC;YACzB,QAAQ,CAAC,UAAU,GAAG,QAAQ,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QAC3C,CAAC;aAAM,CAAC;YACN,QAAQ,CAAC,UAAU,GAAG,oBAAoB,CAAC;QAC7C,CAAC;IACH,CAAC;IAED,MAAM,EAAC,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,OAAO,EAAC,GAAG;QACpD,GAAG,QAAQ;QACX,GAAG,IAAI;KACR,CAAC;IAEF,IAAI,MAAc,CAAC;IACnB,IAAI,MAAM,UAAU,CAAC,UAAU,IAAI,EAAE,CAAC,EAAE,CAAC;QACvC,MAAM,GAAG,gBAAgB,CAAC,UAAU,IAAI,EAAE,CAAC,CAAC;IAC9C,CAAC;SAAM,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO,IAAI,CAAC,OAAO,CAAC,QAAQ,KAAK,OAAO,IAAI,YAAY,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,EAAE,CAAC;QAC1G,0CAA0C;QAC1C,MAAM,GAAG,gBAAgB,CAAC;YACxB,IAAI,EAAE,UAAoB;YAC1B,IAAI,EAAE,UAAoB;SAC3B,CAAC,CAAC;IACL,CAAC;SAAM,CAAC;QACN,MAAM,IAAI,KAAK,CAAC,0BAA0B,UAAU,uCAAuC,CAAC,CAAC;IAC/F,CAAC;IAED,OAAO,MAAM,IAAI,OAAO,CAAS,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACnD,MAAM,SAAS,GAAG,UAAU,CAAC,GAAG,EAAE;YAChC,MAAM,CAAC,kBAAkB,EAAE,CAAC;YAC5B,MAAM,CAAC,IAAI,KAAK,CAAC,8BAA8B,OAAO,IAAI,CAAC,CAAC,CAAC;QAC/D,CAAC,EAAE,OAAO,IAAI,IAAI,CAAC,CAAC;QAEpB,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE;YAC3B,YAAY,CAAC,SAAS,CAAC,CAAC;YACxB,MAAM,CAAC,GAAG,CAAC,CAAC;QACd,CAAC,CAAC,CAAC;QAEH,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,GAAG,EAAE;YAC1B,YAAY,CAAC,SAAS,CAAC,CAAC;YACxB,OAAO,CAAC,MAAM,CAAC,CAAC;QAClB,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,OAA+B,EAAE;IAClE,MAAM,MAAM,GAAG,MAAM,gBAAgB,CAAC,IAAI,CAAC,CAAC;IAC5C,OAAO,IAAI,MAAM,CAAC,MAAM,CAAC,CAAC;AAC5B,CAAC;AAED;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,QAAyB,EAAE,IAAY,EAAE,YAAoB,CAAC;IAClG,qCAAqC;IACrC,MAAM,KAAK,GAAG,IAAI,YAAY,CAAC,QAAQ,EAAE,IAAI,EAAE,SAAS,CAAC,CAAC;IAC1D,IAAI,MAA0B,CAAC;IAE/B,IAAI,CAAC;QACH,kBAAkB;QAClB,MAAM,KAAK,CAAC,KAAK,EAAE,CAAC;QAEpB,uBAAuB;QACvB,MAAM,GAAG,MAAM,KAAK,CAAC,OAAO,EAAE,CAAC;QAC/B,OAAO,MAAM,CAAC;IAChB,CAAC;YAAS,CAAC;QACT,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,IAAI,CAAC;gBACH,MAAM,KAAK,CAAC,IAAI,EAAE,CAAC;YACrB,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,GAAG,CAAC,KAAK,CAAC,yBAAyB,GAAG,EAAE,CAAC,CAAC;YAC5C,CAAC;QACH,CAAC;IACH,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,KAAK,UAAU,UAAU,CAAC,IAAY;IACpC,IAAI,CAAC;QACH,MAAM,MAAM,CAAC,IAAI,CAAC,CAAC;QACnB,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/lib/usbmux/index.ts"],"names":[],"mappings":"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"}
@@ -13,6 +13,7 @@ export interface DecodedUsbmux {
13
13
  export declare class UsbmuxDecoder extends Transform {
14
14
  private _buffer;
15
15
  constructor();
16
+ get buffer(): Buffer;
16
17
  _transform(chunk: Buffer, encoding: BufferEncoding, callback: TransformCallback): void;
17
18
  private _decode;
18
19
  }
@@ -1 +1 @@
1
- {"version":3,"file":"usbmux-decoder.d.ts","sourceRoot":"","sources":["../../../../src/lib/usbmux/usbmux-decoder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,SAAS,EAAE,KAAK,iBAAiB,EAAC,MAAM,aAAa,CAAC;AAG9D,OAAO,KAAK,EAAC,eAAe,EAAC,MAAM,aAAa,CAAC;AAIjD,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;CACb;AAED,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,YAAY,CAAC;IACrB,OAAO,EAAE,eAAe,CAAC;CAC1B;AAED,qBAAa,aAAc,SAAQ,SAAS;IAC1C,OAAO,CAAC,OAAO,CAA2B;;IAM1C,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,cAAc,EAAE,QAAQ,EAAE,iBAAiB,GAAG,IAAI;IAwBtF,OAAO,CAAC,OAAO;CAWhB"}
1
+ {"version":3,"file":"usbmux-decoder.d.ts","sourceRoot":"","sources":["../../../../src/lib/usbmux/usbmux-decoder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,SAAS,EAAE,KAAK,iBAAiB,EAAC,MAAM,aAAa,CAAC;AAG9D,OAAO,KAAK,EAAC,eAAe,EAAC,MAAM,aAAa,CAAC;AAIjD,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;CACb;AAED,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,YAAY,CAAC;IACrB,OAAO,EAAE,eAAe,CAAC;CAC1B;AAED,qBAAa,aAAc,SAAQ,SAAS;IAC1C,OAAO,CAAC,OAAO,CAA2B;;IAM1C,IAAI,MAAM,IAAI,MAAM,CAEnB;IAED,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,cAAc,EAAE,QAAQ,EAAE,iBAAiB,GAAG,IAAI;IA4BtF,OAAO,CAAC,OAAO;CAWhB"}
@@ -6,6 +6,9 @@ export class UsbmuxDecoder extends Transform {
6
6
  constructor() {
7
7
  super({ objectMode: true });
8
8
  }
9
+ get buffer() {
10
+ return this._buffer;
11
+ }
9
12
  _transform(chunk, encoding, callback) {
10
13
  // Append the new chunk to the internal buffer
11
14
  this._buffer = Buffer.concat([this._buffer, chunk]);
@@ -17,11 +20,16 @@ export class UsbmuxDecoder extends Transform {
17
20
  if (this._buffer.length < totalLength) {
18
21
  break; // Wait for more data
19
22
  }
20
- // Extract the full message
21
- const message = this._buffer.slice(0, totalLength);
22
- this._decode(message);
23
- // Remove the processed message from the buffer
24
- this._buffer = this._buffer.slice(totalLength);
23
+ // Extract the full message and remove it from the buffer before decoding,
24
+ // so any synchronous data listeners see only the unconsumed remainder.
25
+ const message = this._buffer.subarray(0, totalLength);
26
+ this._buffer = this._buffer.subarray(totalLength);
27
+ try {
28
+ this._decode(message);
29
+ }
30
+ catch (err) {
31
+ return callback(err instanceof Error ? err : new Error(String(err)));
32
+ }
25
33
  }
26
34
  callback();
27
35
  }
@@ -32,7 +40,7 @@ export class UsbmuxDecoder extends Transform {
32
40
  type: data.readUInt32LE(8),
33
41
  tag: data.readUInt32LE(12),
34
42
  };
35
- const payload = data.slice(HEADER_LENGTH);
43
+ const payload = data.subarray(HEADER_LENGTH);
36
44
  this.push({ header, payload: parsePlist(payload) });
37
45
  }
38
46
  }
@@ -1 +1 @@
1
- {"version":3,"file":"usbmux-decoder.js","sourceRoot":"","sources":["../../../../src/lib/usbmux/usbmux-decoder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,SAAS,EAAyB,MAAM,aAAa,CAAC;AAE9D,OAAO,EAAC,UAAU,EAAC,MAAM,mBAAmB,CAAC;AAG7C,MAAM,aAAa,GAAG,EAAE,CAAC;AAczB,MAAM,OAAO,aAAc,SAAQ,SAAS;IAClC,OAAO,GAAW,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAE1C;QACE,KAAK,CAAC,EAAC,UAAU,EAAE,IAAI,EAAC,CAAC,CAAC;IAC5B,CAAC;IAED,UAAU,CAAC,KAAa,EAAE,QAAwB,EAAE,QAA2B;QAC7E,8CAA8C;QAC9C,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC;QAEpD,0CAA0C;QAC1C,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,IAAI,aAAa,EAAE,CAAC;YAC5C,yDAAyD;YACzD,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;YAEjD,6CAA6C;YAC7C,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,WAAW,EAAE,CAAC;gBACtC,MAAM,CAAC,qBAAqB;YAC9B,CAAC;YAED,2BAA2B;YAC3B,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC;YACnD,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;YAEtB,+CAA+C;YAC/C,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;QACjD,CAAC;QACD,QAAQ,EAAE,CAAC;IACb,CAAC;IAEO,OAAO,CAAC,IAAY;QAC1B,MAAM,MAAM,GAAG;YACb,MAAM,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC;YAC5B,OAAO,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC;YAC7B,IAAI,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC;YAC1B,GAAG,EAAE,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC;SAC3B,CAAC;QAEF,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;QAC1C,IAAI,CAAC,IAAI,CAAC,EAAC,MAAM,EAAE,OAAO,EAAE,UAAU,CAAC,OAAO,CAAC,EAAkB,CAAC,CAAC;IACrE,CAAC;CACF"}
1
+ {"version":3,"file":"usbmux-decoder.js","sourceRoot":"","sources":["../../../../src/lib/usbmux/usbmux-decoder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,SAAS,EAAyB,MAAM,aAAa,CAAC;AAE9D,OAAO,EAAC,UAAU,EAAC,MAAM,mBAAmB,CAAC;AAG7C,MAAM,aAAa,GAAG,EAAE,CAAC;AAczB,MAAM,OAAO,aAAc,SAAQ,SAAS;IAClC,OAAO,GAAW,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAE1C;QACE,KAAK,CAAC,EAAC,UAAU,EAAE,IAAI,EAAC,CAAC,CAAC;IAC5B,CAAC;IAED,IAAI,MAAM;QACR,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;IAED,UAAU,CAAC,KAAa,EAAE,QAAwB,EAAE,QAA2B;QAC7E,8CAA8C;QAC9C,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC;QAEpD,0CAA0C;QAC1C,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,IAAI,aAAa,EAAE,CAAC;YAC5C,yDAAyD;YACzD,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;YAEjD,6CAA6C;YAC7C,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,WAAW,EAAE,CAAC;gBACtC,MAAM,CAAC,qBAAqB;YAC9B,CAAC;YAED,0EAA0E;YAC1E,uEAAuE;YACvE,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC;YACtD,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;YAElD,IAAI,CAAC;gBACH,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;YACxB,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,OAAO,QAAQ,CAAC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YACvE,CAAC;QACH,CAAC;QACD,QAAQ,EAAE,CAAC;IACb,CAAC;IAEO,OAAO,CAAC,IAAY;QAC1B,MAAM,MAAM,GAAG;YACb,MAAM,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC;YAC5B,OAAO,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC;YAC7B,IAAI,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC;YAC1B,GAAG,EAAE,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC;SAC3B,CAAC;QAEF,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC;QAC7C,IAAI,CAAC,IAAI,CAAC,EAAC,MAAM,EAAE,OAAO,EAAE,UAAU,CAAC,OAAO,CAAC,EAAkB,CAAC,CAAC;IACrE,CAAC;CACF"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "appium-ios-remotexpc",
3
- "version": "5.16.0",
3
+ "version": "5.16.2",
4
4
  "description": "",
5
5
  "keywords": [],
6
6
  "bugs": {
@@ -83,7 +83,33 @@ export class DevicePortForwarder extends EventEmitter {
83
83
  this.activeSockets.add(localSocket);
84
84
  this.emit('clientConnected', localSocket);
85
85
 
86
- let upstreamSocket: Socket | undefined;
86
+ const upstreamSocket = await this.openUpstreamForClient(localSocket);
87
+ if (!upstreamSocket) {
88
+ return;
89
+ }
90
+
91
+ this.activeSockets.add(upstreamSocket);
92
+ this.emit('upstreamConnected', upstreamSocket);
93
+ this.bridgeSockets(localSocket, upstreamSocket);
94
+ }
95
+
96
+ /**
97
+ * Opens the upstream socket while watching for the client going away.
98
+ * Returns undefined after cleanup if the connect fails or the client disconnected meanwhile.
99
+ */
100
+ private async openUpstreamForClient(localSocket: Socket): Promise<Socket | undefined> {
101
+ let clientError: Error | undefined;
102
+ let clientClosed = false;
103
+ const onEarlyError = (err: Error): void => {
104
+ clientError = err;
105
+ };
106
+ const onEarlyClose = (): void => {
107
+ clientClosed = true;
108
+ };
109
+ localSocket.once('error', onEarlyError);
110
+ localSocket.once('close', onEarlyClose);
111
+
112
+ let upstreamSocket: Socket;
87
113
  try {
88
114
  upstreamSocket = await this.openUpstreamSocket();
89
115
  } catch (err) {
@@ -91,12 +117,27 @@ export class DevicePortForwarder extends EventEmitter {
91
117
  this.emit('upstreamConnectError', err);
92
118
  this.emit('clientDisconnected', localSocket, err);
93
119
  localSocket.destroy();
94
- return;
120
+ return undefined;
121
+ } finally {
122
+ localSocket.off('error', onEarlyError);
123
+ localSocket.off('close', onEarlyClose);
95
124
  }
96
125
 
97
- this.activeSockets.add(upstreamSocket);
98
- this.emit('upstreamConnected', upstreamSocket);
126
+ if (clientClosed || localSocket.destroyed || clientError !== undefined) {
127
+ this.activeSockets.delete(localSocket);
128
+ this.emit('clientDisconnected', localSocket, clientError);
129
+ localSocket.destroy();
130
+ upstreamSocket.destroy();
131
+ return undefined;
132
+ }
133
+
134
+ return upstreamSocket;
135
+ }
99
136
 
137
+ /**
138
+ * Pipes the two sockets together and tears both down when either side closes or errors.
139
+ */
140
+ private bridgeSockets(localSocket: Socket, upstreamSocket: Socket): void {
100
141
  let cleanedUp = false;
101
142
  const teardown = (): void => {
102
143
  this.activeSockets.delete(localSocket);
@@ -6,7 +6,7 @@ import {BaseSocketService} from '../../base-socket-service.js';
6
6
  import {getLogger} from '../logger.js';
7
7
  import {type PairRecord, processPlistResponse} from '../pair-record/index.js';
8
8
  import {type RawPairRecordResponse} from '../pair-record/pair-record.js';
9
- import {LengthBasedSplitter, parsePlist} from '../plist/index.js';
9
+ import {parsePlist} from '../plist/index.js';
10
10
  import type {PlistDictionary} from '../types.js';
11
11
  import {type DecodedUsbmux, UsbmuxDecoder} from '../usbmux/usbmux-decoder.js';
12
12
  import {UsbmuxEncoder} from '../usbmux/usbmux-encoder.js';
@@ -39,7 +39,6 @@ const log = getLogger('Usbmux');
39
39
  export const USBMUXD_PORT = 27015;
40
40
  export const DEFAULT_USBMUXD_SOCKET = '/var/run/usbmuxd';
41
41
  export const DEFAULT_USBMUXD_HOST = '127.0.0.1';
42
- export const MAX_FRAME_SIZE = 100 * 1024 * 1024; // 1MB
43
42
 
44
43
  // Result codes from usbmuxd
45
44
  export const USBMUX_RESULT = {
@@ -68,7 +67,6 @@ export interface SocketOptions {
68
67
  */
69
68
  export class Usbmux extends BaseSocketService {
70
69
  private readonly _decoder: UsbmuxDecoder;
71
- private readonly _splitter: LengthBasedSplitter;
72
70
  private readonly _encoder: UsbmuxEncoder;
73
71
  private _tag: number;
74
72
  private readonly _responseCallbacks: Record<number, (data: DecodedUsbmux) => void>;
@@ -81,16 +79,10 @@ export class Usbmux extends BaseSocketService {
81
79
  super(socketClient);
82
80
 
83
81
  this._decoder = new UsbmuxDecoder();
84
- this._splitter = new LengthBasedSplitter({
85
- readableStream: socketClient,
86
- littleEndian: true,
87
- maxFrameLength: MAX_FRAME_SIZE,
88
- lengthFieldOffset: 0,
89
- lengthFieldLength: 4,
90
- lengthAdjustment: 0,
91
- });
92
-
93
82
  this._socketClient.pipe(this._decoder);
83
+ this._decoder.on('error', (err: Error) => {
84
+ log.error(`Usbmux decoder error: ${err.message}`);
85
+ });
94
86
 
95
87
  this._encoder = new UsbmuxEncoder();
96
88
  this._encoder.pipe(this._socketClient);
@@ -219,20 +211,17 @@ export class Usbmux extends BaseSocketService {
219
211
 
220
212
  if (data.payload.Number === USBMUX_RESULT.OK) {
221
213
  // Detach constructor-owned consumers from the raw socket so the caller
222
- // gets full byte-stream ownership. Leaving the splitter/decoder attached
223
- // lets their unread buffers grow, eventually applying backpressure that
224
- // stalls long-lived forwards.
225
- //
226
- // Order matters: unpipe() must happen before removeAllListeners() /
227
- // shutdown(). Removing listeners first breaks Node's pipe cleanup, leaving
228
- // orphaned source listeners that continue pushing bytes into detached
229
- // streams and eventually stall the socket.
230
- this._socketClient.unpipe(this._splitter);
231
- this._splitter.unpipe(this._decoder);
214
+ // gets full byte-stream ownership.
232
215
  this._socketClient.unpipe(this._decoder);
233
216
  this._encoder.unpipe(this._socketClient);
234
- this._splitter.shutdown();
235
217
  this._decoder.removeAllListeners('data');
218
+
219
+ // Hand any unconsumed bytes back to the raw socket stream so the caller
220
+ // receives them immediately when attaching listeners.
221
+ const pending = this._decoder.buffer;
222
+ if (pending.length > 0) {
223
+ this._socketClient.unshift(pending);
224
+ }
236
225
  return this._socketClient;
237
226
  } else if (data.payload.Number === USBMUX_RESULT.CONNREFUSED) {
238
227
  throw new Error(`Connection was refused to port ${port}`);
@@ -24,6 +24,10 @@ export class UsbmuxDecoder extends Transform {
24
24
  super({objectMode: true});
25
25
  }
26
26
 
27
+ get buffer(): Buffer {
28
+ return this._buffer;
29
+ }
30
+
27
31
  _transform(chunk: Buffer, encoding: BufferEncoding, callback: TransformCallback): void {
28
32
  // Append the new chunk to the internal buffer
29
33
  this._buffer = Buffer.concat([this._buffer, chunk]);
@@ -38,12 +42,16 @@ export class UsbmuxDecoder extends Transform {
38
42
  break; // Wait for more data
39
43
  }
40
44
 
41
- // Extract the full message
42
- const message = this._buffer.slice(0, totalLength);
43
- this._decode(message);
45
+ // Extract the full message and remove it from the buffer before decoding,
46
+ // so any synchronous data listeners see only the unconsumed remainder.
47
+ const message = this._buffer.subarray(0, totalLength);
48
+ this._buffer = this._buffer.subarray(totalLength);
44
49
 
45
- // Remove the processed message from the buffer
46
- this._buffer = this._buffer.slice(totalLength);
50
+ try {
51
+ this._decode(message);
52
+ } catch (err) {
53
+ return callback(err instanceof Error ? err : new Error(String(err)));
54
+ }
47
55
  }
48
56
  callback();
49
57
  }
@@ -56,7 +64,7 @@ export class UsbmuxDecoder extends Transform {
56
64
  tag: data.readUInt32LE(12),
57
65
  };
58
66
 
59
- const payload = data.slice(HEADER_LENGTH);
67
+ const payload = data.subarray(HEADER_LENGTH);
60
68
  this.push({header, payload: parsePlist(payload)} as DecodedUsbmux);
61
69
  }
62
70
  }