appium-ios-remotexpc 0.16.1 → 0.17.0

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
+ ## [0.17.0](https://github.com/appium/appium-ios-remotexpc/compare/v0.16.1...v0.17.0) (2025-12-05)
2
+
3
+ ### Features
4
+
5
+ * **dvt:** implement app list ([#103](https://github.com/appium/appium-ios-remotexpc/issues/103)) ([b33b836](https://github.com/appium/appium-ios-remotexpc/commit/b33b8362af261a9d9f6b8ad3c4e937f1f0dfd811))
6
+
1
7
  ## [0.16.1](https://github.com/appium/appium-ios-remotexpc/compare/v0.16.0...v0.16.1) (2025-12-05)
2
8
 
3
9
  ### Miscellaneous Chores
@@ -5,6 +5,7 @@ import type { PacketData } from 'appium-ios-tuntap';
5
5
  import { EventEmitter } from 'events';
6
6
  import type { ServiceConnection } from '../service-connection.js';
7
7
  import type { BaseService, Service } from '../services/ios/base-service.js';
8
+ import type { iOSApplication } from '../services/ios/dvt/instruments/application-listing.js';
8
9
  import type { LocationCoordinates } from '../services/ios/dvt/instruments/location-simulation.js';
9
10
  import { ProvisioningProfile } from '../services/ios/misagent/provisioning-profile.js';
10
11
  import type { PowerAssertionOptions } from '../services/ios/power-assertion/index.js';
@@ -459,6 +460,32 @@ export interface ScreenshotService {
459
460
  */
460
461
  getScreenshot(): Promise<Buffer>;
461
462
  }
463
+ /**
464
+ * Application listing service interface
465
+ */
466
+ export interface AppListService {
467
+ /**
468
+ * Get the list of iOS applications on the device
469
+ * @returns {Promise<iOSApplication>}
470
+ * e.g.
471
+ * [
472
+ * {
473
+ * ExtensionDictionary: { NSExtensionPointIdentifier: 'com.apple.mlhost.worker', ... },
474
+ * Version: '1.0',
475
+ * DisplayName: 'ModelMonitoringLighthousePlugin',
476
+ * CFBundleIdentifier: 'com.apple.aeroml.ModelMonitoringLighthouse.ModelMonitoringLighthousePlugin',
477
+ * BundlePath: '/System/Library/ExtensionKit/Extensions/ModelMonitoringLighthousePlugin.appex',
478
+ * ExecutableName: 'ModelMonitoringLighthousePlugin',
479
+ * Restricted: 1,
480
+ * Type: 'PluginKit',
481
+ * PluginIdentifier: 'com.apple.aeroml.ModelMonitoringLighthouse.ModelMonitoringLighthousePlugin',
482
+ * PluginUUID: 'AF17A1FE-E454-57C8-B963-0832FD71AB08'
483
+ * },
484
+ * ...
485
+ * ]
486
+ */
487
+ list(): Promise<iOSApplication[]>;
488
+ }
462
489
  /**
463
490
  * Graphics service interface for OpenGL/graphics monitoring
464
491
  */
@@ -497,6 +524,8 @@ export interface DVTServiceWithConnection {
497
524
  conditionInducer: ConditionInducerService;
498
525
  /** The Screenshot service instance */
499
526
  screenshot: ScreenshotService;
527
+ /** The Application Listing service instance */
528
+ appListing: AppListService;
500
529
  /** The Graphics service instance */
501
530
  graphics: GraphicsService;
502
531
  /** The RemoteXPC connection that can be used to close the connection */
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/lib/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/lib/types.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/services/ios/dvt/index.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAE7D,OAAO,EAAE,WAAW,EAAgB,MAAM,oBAAoB,CAAC;AAC/D,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAczE;;;GAGG;AACH,qBAAa,2BAA4B,SAAQ,WAAW;IAC1D,MAAM,CAAC,QAAQ,CAAC,gBAAgB,wCAAwC;IACxE,MAAM,CAAC,QAAQ,CAAC,iBAAiB,KAAK;IAEtC,OAAO,CAAC,UAAU,CAAkC;IACpD,OAAO,CAAC,MAAM,CAA2B;IACzC,OAAO,CAAC,oBAAoB,CAAuB;IACnD,OAAO,CAAC,eAAe,CAAa;IACpC,OAAO,CAAC,YAAY,CAAa;IACjC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAmC;IAChE,OAAO,CAAC,QAAQ,CAAC,eAAe,CAA6C;IAC7E,OAAO,CAAC,mBAAmB,CAAkB;IAC7C,OAAO,CAAC,UAAU,CAA2B;gBAEjC,OAAO,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC;IAQrC;;OAEG;IACG,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAsB9B;;OAEG;IACH,uBAAuB,IAAI,eAAe;IAI1C;;;;OAIG;IACG,WAAW,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IA8BvD;;;;;;OAMG;IACG,WAAW,CACf,OAAO,EAAE,MAAM,EACf,QAAQ,GAAE,MAAM,GAAG,IAAW,EAC9B,IAAI,GAAE,UAAU,GAAG,IAAW,EAC9B,YAAY,GAAE,OAAc,GAC3B,OAAO,CAAC,IAAI,CAAC;IAwDhB;;;;OAIG;IACG,SAAS,CACb,OAAO,GAAE,MAAsD,GAC9D,OAAO,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC;IAiBxB;;;;OAIG;IACG,WAAW,CACf,OAAO,GAAE,MAAsD,GAC9D,OAAO,CAAC,CAAC,MAAM,GAAG,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC;IAgClC;;OAEG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAwC5B;;OAEG;YACW,gBAAgB;IAiC9B,OAAO,CAAC,2BAA2B;IAYnC,OAAO,CAAC,8BAA8B;IAiBtC;;OAEG;YACW,qBAAqB;IA6BnC;;OAEG;YACW,mBAAmB;IA4CjC;;OAEG;YACW,SAAS;IAoCvB;;OAEG;IACH,OAAO,CAAC,eAAe;IA2BvB;;OAEG;IACH,OAAO,CAAC,YAAY;IAWpB;;OAEG;IACH,OAAO,CAAC,eAAe;IAIvB;;OAEG;IACH,OAAO,CAAC,kBAAkB;IA4D1B;;;;;;OAMG;IACH,OAAO,CAAC,kBAAkB;IAgB1B;;OAEG;IACH,OAAO,CAAC,sBAAsB;IAkB9B;;OAEG;IACH,OAAO,CAAC,sBAAsB;IAkC9B;;OAEG;IACH,OAAO,CAAC,mBAAmB;CAwC5B;AAED,OAAO,EAAE,OAAO,EAAE,iBAAiB,EAAE,UAAU,EAAE,UAAU,EAAE,aAAa,EAAE,CAAC;AAC7E,OAAO,EACL,qBAAqB,EACrB,sBAAsB,GACvB,MAAM,8BAA8B,CAAC;AACtC,YAAY,EACV,gBAAgB,EAChB,uBAAuB,EACvB,eAAe,GAChB,MAAM,kBAAkB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/services/ios/dvt/index.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAE7D,OAAO,EAAE,WAAW,EAAgB,MAAM,oBAAoB,CAAC;AAC/D,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAczE;;;GAGG;AACH,qBAAa,2BAA4B,SAAQ,WAAW;IAC1D,MAAM,CAAC,QAAQ,CAAC,gBAAgB,wCAAwC;IACxE,MAAM,CAAC,QAAQ,CAAC,iBAAiB,KAAK;IAEtC,OAAO,CAAC,UAAU,CAAkC;IACpD,OAAO,CAAC,MAAM,CAA2B;IACzC,OAAO,CAAC,oBAAoB,CAAuB;IACnD,OAAO,CAAC,eAAe,CAAa;IACpC,OAAO,CAAC,YAAY,CAAa;IACjC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAmC;IAChE,OAAO,CAAC,QAAQ,CAAC,eAAe,CAA6C;IAC7E,OAAO,CAAC,mBAAmB,CAAkB;IAC7C,OAAO,CAAC,UAAU,CAA2B;gBAEjC,OAAO,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC;IAQrC;;OAEG;IACG,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAsB9B;;OAEG;IACH,uBAAuB,IAAI,eAAe;IAI1C;;;;OAIG;IACG,WAAW,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IA8BvD;;;;;;OAMG;IACG,WAAW,CACf,OAAO,EAAE,MAAM,EACf,QAAQ,GAAE,MAAM,GAAG,IAAW,EAC9B,IAAI,GAAE,UAAU,GAAG,IAAW,EAC9B,YAAY,GAAE,OAAc,GAC3B,OAAO,CAAC,IAAI,CAAC;IAwDhB;;;;OAIG;IACG,SAAS,CACb,OAAO,GAAE,MAAsD,GAC9D,OAAO,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC;IAiBxB;;;;OAIG;IACG,WAAW,CACf,OAAO,GAAE,MAAsD,GAC9D,OAAO,CAAC,CAAC,MAAM,GAAG,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC;IAgClC;;OAEG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAwC5B;;OAEG;YACW,gBAAgB;IAiC9B,OAAO,CAAC,2BAA2B;IAYnC,OAAO,CAAC,8BAA8B;IAiBtC;;OAEG;YACW,qBAAqB;IA6BnC;;OAEG;YACW,mBAAmB;IA4CjC;;OAEG;YACW,SAAS;IAoCvB;;OAEG;IACH,OAAO,CAAC,eAAe;IA2BvB;;OAEG;IACH,OAAO,CAAC,YAAY;IAepB;;OAEG;IACH,OAAO,CAAC,eAAe;IAIvB;;OAEG;IACH,OAAO,CAAC,kBAAkB;IA4D1B;;;;;;OAMG;IACH,OAAO,CAAC,kBAAkB;IAgB1B;;OAEG;IACH,OAAO,CAAC,sBAAsB;IAkB9B;;OAEG;IACH,OAAO,CAAC,sBAAsB;IAkC9B;;OAEG;IACH,OAAO,CAAC,mBAAmB;CAwC5B;AAED,OAAO,EAAE,OAAO,EAAE,iBAAiB,EAAE,UAAU,EAAE,UAAU,EAAE,aAAa,EAAE,CAAC;AAC7E,OAAO,EACL,qBAAqB,EACrB,sBAAsB,GACvB,MAAM,8BAA8B,CAAC;AACtC,YAAY,EACV,gBAAgB,EAChB,uBAAuB,EACvB,eAAe,GAChB,MAAM,kBAAkB,CAAC"}
@@ -376,11 +376,14 @@ export class DVTSecureSocketProxyService extends BaseService {
376
376
  * Archive a value using NSKeyedArchiver format for DTX protocol
377
377
  */
378
378
  archiveValue(value) {
379
+ // Handle null values by referencing the $null marker
380
+ const rootIndex = value === null ? 0 : 1;
381
+ const objects = value === null ? ['$null'] : ['$null', value];
379
382
  const archived = {
380
383
  $version: 100000,
381
384
  $archiver: 'NSKeyedArchiver',
382
- $top: { root: new PlistUID(1) },
383
- $objects: ['$null', value],
385
+ $top: { root: new PlistUID(rootIndex) },
386
+ $objects: objects,
384
387
  };
385
388
  return createBinaryPlist(archived);
386
389
  }
@@ -0,0 +1,46 @@
1
+ import type { DVTSecureSocketProxyService } from '../index.js';
2
+ export interface iOSApplication {
3
+ /** Display name of the application/plugin */
4
+ DisplayName: string;
5
+ /** Bundle identifier in reverse domain notation */
6
+ CFBundleIdentifier: string;
7
+ /** Full path to the application bundle */
8
+ BundlePath: string;
9
+ /** Version string of the application */
10
+ Version: string;
11
+ /** Name of the main executable file */
12
+ ExecutableName: string;
13
+ /** Access restriction flag (0 = unrestricted, 1 = restricted) */
14
+ Restricted: number;
15
+ /** Bundle type (e.g., 'PluginKit', 'Application') */
16
+ Type: string;
17
+ /** Unique identifier for plugins */
18
+ PluginIdentifier: string;
19
+ /** UUID for the plugin instance */
20
+ PluginUUID: string;
21
+ /** Extension configuration with variable structure */
22
+ ExtensionDictionary?: Record<string, any>;
23
+ /** Bundle identifier of the containing app (plugins only) */
24
+ ContainerBundleIdentifier?: string;
25
+ /** Path to the container app bundle (plugins only) */
26
+ ContainerBundlePath?: string;
27
+ }
28
+ /**
29
+ * Application Listing service for retrieving installed applications
30
+ */
31
+ export declare class ApplicationListing {
32
+ private readonly dvt;
33
+ static readonly IDENTIFIER = "com.apple.instruments.server.services.device.applictionListing";
34
+ private channel;
35
+ constructor(dvt: DVTSecureSocketProxyService);
36
+ /**
37
+ * Initialize the application listing channel
38
+ */
39
+ initialize(): Promise<void>;
40
+ /**
41
+ * Get the list of installed applications from the device
42
+ * @returns {Promise<iOSApplication[]>}
43
+ */
44
+ list(): Promise<iOSApplication[]>;
45
+ }
46
+ //# sourceMappingURL=application-listing.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"application-listing.d.ts","sourceRoot":"","sources":["../../../../../../src/services/ios/dvt/instruments/application-listing.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,aAAa,CAAC;AAI/D,MAAM,WAAW,cAAc;IAC7B,6CAA6C;IAC7C,WAAW,EAAE,MAAM,CAAC;IAEpB,mDAAmD;IACnD,kBAAkB,EAAE,MAAM,CAAC;IAE3B,0CAA0C;IAC1C,UAAU,EAAE,MAAM,CAAC;IAEnB,wCAAwC;IACxC,OAAO,EAAE,MAAM,CAAC;IAEhB,uCAAuC;IACvC,cAAc,EAAE,MAAM,CAAC;IAEvB,iEAAiE;IACjE,UAAU,EAAE,MAAM,CAAC;IAEnB,qDAAqD;IACrD,IAAI,EAAE,MAAM,CAAC;IAEb,oCAAoC;IACpC,gBAAgB,EAAE,MAAM,CAAC;IAEzB,mCAAmC;IACnC,UAAU,EAAE,MAAM,CAAC;IAEnB,sDAAsD;IACtD,mBAAmB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAE1C,6DAA6D;IAC7D,yBAAyB,CAAC,EAAE,MAAM,CAAC;IAEnC,sDAAsD;IACtD,mBAAmB,CAAC,EAAE,MAAM,CAAC;CAC9B;AAED;;GAEG;AACH,qBAAa,kBAAkB;IAMjB,OAAO,CAAC,QAAQ,CAAC,GAAG;IALhC,MAAM,CAAC,QAAQ,CAAC,UAAU,oEACyC;IAEnE,OAAO,CAAC,OAAO,CAAwB;gBAEV,GAAG,EAAE,2BAA2B;IAE7D;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAOjC;;;OAGG;IACG,IAAI,IAAI,OAAO,CAAC,cAAc,EAAE,CAAC;CA0BxC"}
@@ -0,0 +1,41 @@
1
+ import { getLogger } from '../../../../lib/logger.js';
2
+ import { MessageAux } from '../dtx-message.js';
3
+ const log = getLogger('ApplicationListing');
4
+ /**
5
+ * Application Listing service for retrieving installed applications
6
+ */
7
+ export class ApplicationListing {
8
+ dvt;
9
+ static IDENTIFIER = 'com.apple.instruments.server.services.device.applictionListing';
10
+ channel = null;
11
+ constructor(dvt) {
12
+ this.dvt = dvt;
13
+ }
14
+ /**
15
+ * Initialize the application listing channel
16
+ */
17
+ async initialize() {
18
+ if (this.channel) {
19
+ return;
20
+ }
21
+ this.channel = await this.dvt.makeChannel(ApplicationListing.IDENTIFIER);
22
+ }
23
+ /**
24
+ * Get the list of installed applications from the device
25
+ * @returns {Promise<iOSApplication[]>}
26
+ */
27
+ async list() {
28
+ await this.initialize();
29
+ const args = new MessageAux().appendObj(null).appendObj(null);
30
+ await this.channel.call('installedApplicationsMatching_registerUpdateToken_')(args);
31
+ const result = await this.channel.receivePlist();
32
+ if (!result) {
33
+ log.warn('Received null/undefined response from installedApplicationsMatching');
34
+ return [];
35
+ }
36
+ if (Array.isArray(result)) {
37
+ return result;
38
+ }
39
+ throw new Error(`Unexpected response format from installedApplicationsMatching: ${JSON.stringify(result)}`);
40
+ }
41
+ }
@@ -1 +1 @@
1
- {"version":3,"file":"nskeyedarchiver-decoder.d.ts","sourceRoot":"","sources":["../../../../../src/services/ios/dvt/nskeyedarchiver-decoder.ts"],"names":[],"mappings":"AAIA;;;;;;;;;GASG;AACH,qBAAa,sBAAsB;IACjC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAQ;IAChC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAmB;IAC3C,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAM;gBAElB,IAAI,EAAE,GAAG;IAUrB;;OAEG;IACH,MAAM,CAAC,gBAAgB,CAAC,IAAI,EAAE,GAAG,GAAG,OAAO;IAa3C;;OAEG;IACH,MAAM,IAAI,GAAG;IA8Bb;;OAEG;IACH,OAAO,CAAC,YAAY;IAkFpB;;OAEG;IACH,OAAO,CAAC,WAAW;IAenB;;OAEG;IACH,OAAO,CAAC,gBAAgB;CAkBzB;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,GAAG,GAAG,GAAG,CAiBpD"}
1
+ {"version":3,"file":"nskeyedarchiver-decoder.d.ts","sourceRoot":"","sources":["../../../../../src/services/ios/dvt/nskeyedarchiver-decoder.ts"],"names":[],"mappings":"AAKA;;;;;;;;;GASG;AACH,qBAAa,sBAAsB;IACjC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAQ;IAChC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAmB;IAC3C,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAM;gBAElB,IAAI,EAAE,GAAG;IAUrB;;OAEG;IACH,MAAM,CAAC,gBAAgB,CAAC,IAAI,EAAE,GAAG,GAAG,OAAO;IAa3C;;OAEG;IACH,MAAM,IAAI,GAAG;IA8Bb;;OAEG;IACH,OAAO,CAAC,YAAY;IAmHpB;;OAEG;IACH,OAAO,CAAC,WAAW;IAmBnB;;OAEG;IACH,OAAO,CAAC,gBAAgB;CAuBzB;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,GAAG,GAAG,GAAG,CAiBpD"}
@@ -1,5 +1,6 @@
1
1
  import { getLogger } from '../../../lib/logger.js';
2
2
  const log = getLogger('NSKeyedArchiverDecoder');
3
+ const MAX_DECODE_DEPTH = 1000;
3
4
  /**
4
5
  * Decode NSKeyedArchiver formatted data into native JavaScript objects
5
6
  *
@@ -66,42 +67,59 @@ export class NSKeyedArchiverDecoder {
66
67
  /**
67
68
  * Decode an object at a specific index
68
69
  */
69
- decodeObject(index) {
70
+ decodeObject(index, visited = new Set(), depth = 0) {
71
+ // Prevent stack overflow with depth limit
72
+ if (depth > MAX_DECODE_DEPTH) {
73
+ log.warn(`Maximum decode depth exceeded at index ${index}`);
74
+ return null;
75
+ }
70
76
  if (index < 0 || index >= this.objects.length) {
71
77
  return null;
72
78
  }
79
+ // Prevent infinite recursion
80
+ if (visited.has(index)) {
81
+ return null; // Return null for circular references
82
+ }
73
83
  // Check cache
74
84
  if (this.decoded.has(index)) {
75
85
  return this.decoded.get(index);
76
86
  }
87
+ visited.add(index);
77
88
  const obj = this.objects[index];
78
89
  // Handle null marker
79
90
  if (obj === '$null' || obj === null) {
91
+ visited.delete(index);
80
92
  return null;
81
93
  }
82
94
  // Handle primitive types
83
95
  if (typeof obj !== 'object') {
96
+ visited.delete(index);
84
97
  return obj;
85
98
  }
86
99
  // Handle Buffer/binary data (eg. screenshots)
87
100
  if (Buffer.isBuffer(obj)) {
88
101
  this.decoded.set(index, obj);
102
+ visited.delete(index);
89
103
  return obj;
90
104
  }
91
105
  // Handle UID references
92
106
  if ('CF$UID' in obj) {
93
- return this.decodeObject(obj.CF$UID);
107
+ const result = this.decodeObject(obj.CF$UID, visited, depth + 1);
108
+ visited.delete(index);
109
+ return result;
94
110
  }
95
111
  // Handle NSDictionary (NS.keys + NS.objects) - check this FIRST before NSArray
96
112
  if ('NS.keys' in obj && 'NS.objects' in obj) {
97
- const result = this.decodeDictionary(obj['NS.keys'], obj['NS.objects']);
113
+ const result = this.decodeDictionary(obj['NS.keys'], obj['NS.objects'], visited, depth);
98
114
  this.decoded.set(index, result);
115
+ visited.delete(index);
99
116
  return result;
100
117
  }
101
118
  // Handle NSArray (NS.objects only, without NS.keys)
102
119
  if ('NS.objects' in obj) {
103
- const result = this.decodeArray(obj['NS.objects']);
120
+ const result = this.decodeArray(obj['NS.objects'], visited, depth);
104
121
  this.decoded.set(index, result);
122
+ visited.delete(index);
105
123
  return result;
106
124
  }
107
125
  // Handle regular objects - just return as-is but resolve references
@@ -112,11 +130,17 @@ export class NSKeyedArchiverDecoder {
112
130
  }
113
131
  if (typeof value === 'number') {
114
132
  // Could be a reference or primitive
115
- const referenced = this.objects[value];
116
- if (referenced &&
117
- typeof referenced === 'object' &&
118
- referenced !== '$null') {
119
- result[key] = this.decodeObject(value);
133
+ if (value < this.objects.length && value >= 0) {
134
+ const referenced = this.objects[value];
135
+ if (referenced &&
136
+ typeof referenced === 'object' &&
137
+ referenced !== '$null' &&
138
+ !visited.has(value)) {
139
+ result[key] = this.decodeObject(value, visited, depth + 1);
140
+ }
141
+ else {
142
+ result[key] = value;
143
+ }
120
144
  }
121
145
  else {
122
146
  result[key] = value;
@@ -124,8 +148,8 @@ export class NSKeyedArchiverDecoder {
124
148
  }
125
149
  else if (typeof value === 'object' && value && 'CF$UID' in value) {
126
150
  const uid = value.CF$UID;
127
- if (typeof uid === 'number') {
128
- result[key] = this.decodeObject(uid);
151
+ if (typeof uid === 'number' && !visited.has(uid)) {
152
+ result[key] = this.decodeObject(uid, visited, depth + 1);
129
153
  }
130
154
  else {
131
155
  result[key] = value;
@@ -136,21 +160,22 @@ export class NSKeyedArchiverDecoder {
136
160
  }
137
161
  }
138
162
  this.decoded.set(index, result);
163
+ visited.delete(index);
139
164
  return result;
140
165
  }
141
166
  /**
142
167
  * Decode an NSArray
143
168
  */
144
- decodeArray(refs) {
169
+ decodeArray(refs, visited = new Set(), depth = 0) {
145
170
  if (!Array.isArray(refs)) {
146
171
  return [];
147
172
  }
148
173
  return refs.map((ref) => {
149
174
  if (typeof ref === 'number') {
150
- return this.decodeObject(ref);
175
+ return this.decodeObject(ref, visited, depth + 1);
151
176
  }
152
177
  else if (typeof ref === 'object' && ref && 'CF$UID' in ref) {
153
- return this.decodeObject(ref.CF$UID);
178
+ return this.decodeObject(ref.CF$UID, visited, depth + 1);
154
179
  }
155
180
  return ref;
156
181
  });
@@ -158,14 +183,14 @@ export class NSKeyedArchiverDecoder {
158
183
  /**
159
184
  * Decode an NSDictionary
160
185
  */
161
- decodeDictionary(keyRefs, valueRefs) {
186
+ decodeDictionary(keyRefs, valueRefs, visited = new Set(), depth = 0) {
162
187
  if (!Array.isArray(keyRefs) || !Array.isArray(valueRefs)) {
163
188
  return {};
164
189
  }
165
190
  const result = {};
166
191
  for (let i = 0; i < keyRefs.length && i < valueRefs.length; i++) {
167
- const key = this.decodeObject(keyRefs[i]);
168
- const value = this.decodeObject(valueRefs[i]);
192
+ const key = this.decodeObject(keyRefs[i], visited, depth + 1);
193
+ const value = this.decodeObject(valueRefs[i], visited, depth + 1);
169
194
  if (typeof key === 'string') {
170
195
  result[key] = value;
171
196
  }
@@ -1 +1 @@
1
- {"version":3,"file":"services.d.ts","sourceRoot":"","sources":["../../src/services.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,mBAAmB,EAAE,MAAM,2CAA2C,CAAC;AAGhF,OAAO,KAAK,EACV,wBAAwB,EACxB,gCAAgC,EAChC,6BAA6B,EAC7B,iCAAiC,EACjC,uCAAuC,EACvC,sCAAsC,EACtC,mCAAmC,EACnC,gCAAgC,EAChC,aAAa,IAAI,iBAAiB,EAClC,iCAAiC,EAClC,MAAM,gBAAgB,CAAC;AACxB,OAAO,UAAU,MAAM,6BAA6B,CAAC;AAmBrD,wBAAsB,uBAAuB,CAC3C,IAAI,EAAE,MAAM,GACX,OAAO,CAAC,gCAAgC,CAAC,CAY3C;AAED,wBAAsB,6BAA6B,CACjD,IAAI,EAAE,MAAM,GACX,OAAO,CAAC,sCAAsC,CAAC,CAYjD;AAED,wBAAsB,wBAAwB,CAC5C,IAAI,EAAE,MAAM,GACX,OAAO,CAAC,iCAAiC,CAAC,CAY5C;AAED,wBAAsB,8BAA8B,CAClD,IAAI,EAAE,MAAM,GACX,OAAO,CAAC,uCAAuC,CAAC,CAYlD;AAED,wBAAsB,uBAAuB,CAC3C,IAAI,EAAE,MAAM,GACX,OAAO,CAAC,gCAAgC,CAAC,CAY3C;AAED,wBAAsB,oBAAoB,CACxC,IAAI,EAAE,MAAM,GACX,OAAO,CAAC,6BAA6B,CAAC,CAYxC;AAED,wBAAsB,0BAA0B,CAC9C,IAAI,EAAE,MAAM,GACX,OAAO,CAAC,mCAAmC,CAAC,CAY9C;AAED,wBAAsB,kBAAkB,CACtC,IAAI,EAAE,MAAM,GACX,OAAO,CAAC,iBAAiB,CAAC,CAG5B;AAED;;;GAGG;AACH,wBAAsB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC,CAOvE;AAED,wBAAsB,wBAAwB,CAC5C,IAAI,EAAE,MAAM,GACX,OAAO,CAAC,iCAAiC,CAAC,CAY5C;AAED,wBAAsB,eAAe,CACnC,IAAI,EAAE,MAAM,GACX,OAAO,CAAC,wBAAwB,CAAC,CA6BnC;AAED,wBAAsB,yBAAyB,CAAC,IAAI,EAAE,MAAM;;;;;;;;GAO3D"}
1
+ {"version":3,"file":"services.d.ts","sourceRoot":"","sources":["../../src/services.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,mBAAmB,EAAE,MAAM,2CAA2C,CAAC;AAGhF,OAAO,KAAK,EACV,wBAAwB,EACxB,gCAAgC,EAChC,6BAA6B,EAC7B,iCAAiC,EACjC,uCAAuC,EACvC,sCAAsC,EACtC,mCAAmC,EACnC,gCAAgC,EAChC,aAAa,IAAI,iBAAiB,EAClC,iCAAiC,EAClC,MAAM,gBAAgB,CAAC;AACxB,OAAO,UAAU,MAAM,6BAA6B,CAAC;AAoBrD,wBAAsB,uBAAuB,CAC3C,IAAI,EAAE,MAAM,GACX,OAAO,CAAC,gCAAgC,CAAC,CAY3C;AAED,wBAAsB,6BAA6B,CACjD,IAAI,EAAE,MAAM,GACX,OAAO,CAAC,sCAAsC,CAAC,CAYjD;AAED,wBAAsB,wBAAwB,CAC5C,IAAI,EAAE,MAAM,GACX,OAAO,CAAC,iCAAiC,CAAC,CAY5C;AAED,wBAAsB,8BAA8B,CAClD,IAAI,EAAE,MAAM,GACX,OAAO,CAAC,uCAAuC,CAAC,CAYlD;AAED,wBAAsB,uBAAuB,CAC3C,IAAI,EAAE,MAAM,GACX,OAAO,CAAC,gCAAgC,CAAC,CAY3C;AAED,wBAAsB,oBAAoB,CACxC,IAAI,EAAE,MAAM,GACX,OAAO,CAAC,6BAA6B,CAAC,CAYxC;AAED,wBAAsB,0BAA0B,CAC9C,IAAI,EAAE,MAAM,GACX,OAAO,CAAC,mCAAmC,CAAC,CAY9C;AAED,wBAAsB,kBAAkB,CACtC,IAAI,EAAE,MAAM,GACX,OAAO,CAAC,iBAAiB,CAAC,CAG5B;AAED;;;GAGG;AACH,wBAAsB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC,CAOvE;AAED,wBAAsB,wBAAwB,CAC5C,IAAI,EAAE,MAAM,GACX,OAAO,CAAC,iCAAiC,CAAC,CAY5C;AAED,wBAAsB,eAAe,CACnC,IAAI,EAAE,MAAM,GACX,OAAO,CAAC,wBAAwB,CAAC,CA+BnC;AAED,wBAAsB,yBAAyB,CAAC,IAAI,EAAE,MAAM;;;;;;;;GAO3D"}
@@ -5,6 +5,7 @@ import { TunnelApiClient } from './lib/tunnel/tunnel-api-client.js';
5
5
  import AfcService from './services/ios/afc/index.js';
6
6
  import DiagnosticsService from './services/ios/diagnostic-service/index.js';
7
7
  import { DVTSecureSocketProxyService } from './services/ios/dvt/index.js';
8
+ import { ApplicationListing } from './services/ios/dvt/instruments/application-listing.js';
8
9
  import { ConditionInducer } from './services/ios/dvt/instruments/condition-inducer.js';
9
10
  import { Graphics } from './services/ios/dvt/instruments/graphics.js';
10
11
  import { LocationSimulation } from './services/ios/dvt/instruments/location-simulation.js';
@@ -137,6 +138,7 @@ export async function startDVTService(udid) {
137
138
  const locationSimulation = new LocationSimulation(dvtService);
138
139
  const conditionInducer = new ConditionInducer(dvtService);
139
140
  const screenshot = new Screenshot(dvtService);
141
+ const appListing = new ApplicationListing(dvtService);
140
142
  const graphics = new Graphics(dvtService);
141
143
  return {
142
144
  remoteXPC: remoteXPC,
@@ -144,6 +146,7 @@ export async function startDVTService(udid) {
144
146
  locationSimulation,
145
147
  conditionInducer,
146
148
  screenshot,
149
+ appListing,
147
150
  graphics,
148
151
  };
149
152
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "appium-ios-remotexpc",
3
- "version": "0.16.1",
3
+ "version": "0.17.0",
4
4
  "main": "build/src/index.js",
5
5
  "types": "build/src/index.d.ts",
6
6
  "type": "module",
@@ -44,6 +44,7 @@
44
44
  "test:dvt:location-simulation": "mocha test/integration/dvt_instruments/location-simulation-test.ts --exit --timeout 1m",
45
45
  "test:dvt:condition-inducer": "mocha test/integration/dvt_instruments/condition-inducer-test.ts --exit --timeout 1m",
46
46
  "test:dvt:screenshot": "mocha test/integration/dvt_instruments/screenshot-test.ts --exit --timeout 1m",
47
+ "test:dvt:applist": "mocha test/integration/dvt_instruments/app-listing-test.ts --exit --timeout 1m",
47
48
  "test:tunnel-creation": "sudo tsx scripts/test-tunnel-creation.ts",
48
49
  "test:tunnel-creation:lsof": "sudo tsx scripts/test-tunnel-creation.ts --keep-open"
49
50
  },
package/src/lib/types.ts CHANGED
@@ -6,6 +6,7 @@ import { EventEmitter } from 'events';
6
6
 
7
7
  import type { ServiceConnection } from '../service-connection.js';
8
8
  import type { BaseService, Service } from '../services/ios/base-service.js';
9
+ import type { iOSApplication } from '../services/ios/dvt/instruments/application-listing.js';
9
10
  import type { LocationCoordinates } from '../services/ios/dvt/instruments/location-simulation.js';
10
11
  import { ProvisioningProfile } from '../services/ios/misagent/provisioning-profile.js';
11
12
  import type { PowerAssertionOptions } from '../services/ios/power-assertion/index.js';
@@ -521,6 +522,32 @@ export interface ScreenshotService {
521
522
  getScreenshot(): Promise<Buffer>;
522
523
  }
523
524
 
525
+ /**
526
+ * Application listing service interface
527
+ */
528
+ export interface AppListService {
529
+ /**
530
+ * Get the list of iOS applications on the device
531
+ * @returns {Promise<iOSApplication>}
532
+ * e.g.
533
+ * [
534
+ * {
535
+ * ExtensionDictionary: { NSExtensionPointIdentifier: 'com.apple.mlhost.worker', ... },
536
+ * Version: '1.0',
537
+ * DisplayName: 'ModelMonitoringLighthousePlugin',
538
+ * CFBundleIdentifier: 'com.apple.aeroml.ModelMonitoringLighthouse.ModelMonitoringLighthousePlugin',
539
+ * BundlePath: '/System/Library/ExtensionKit/Extensions/ModelMonitoringLighthousePlugin.appex',
540
+ * ExecutableName: 'ModelMonitoringLighthousePlugin',
541
+ * Restricted: 1,
542
+ * Type: 'PluginKit',
543
+ * PluginIdentifier: 'com.apple.aeroml.ModelMonitoringLighthouse.ModelMonitoringLighthousePlugin',
544
+ * PluginUUID: 'AF17A1FE-E454-57C8-B963-0832FD71AB08'
545
+ * },
546
+ * ...
547
+ * ]
548
+ */
549
+ list(): Promise<iOSApplication[]>;
550
+ }
524
551
  /**
525
552
  * Graphics service interface for OpenGL/graphics monitoring
526
553
  */
@@ -560,6 +587,8 @@ export interface DVTServiceWithConnection {
560
587
  conditionInducer: ConditionInducerService;
561
588
  /** The Screenshot service instance */
562
589
  screenshot: ScreenshotService;
590
+ /** The Application Listing service instance */
591
+ appListing: AppListService;
563
592
  /** The Graphics service instance */
564
593
  graphics: GraphicsService;
565
594
  /** The RemoteXPC connection that can be used to close the connection */
@@ -509,11 +509,15 @@ export class DVTSecureSocketProxyService extends BaseService {
509
509
  * Archive a value using NSKeyedArchiver format for DTX protocol
510
510
  */
511
511
  private archiveValue(value: any): Buffer {
512
+ // Handle null values by referencing the $null marker
513
+ const rootIndex = value === null ? 0 : 1;
514
+ const objects = value === null ? ['$null'] : ['$null', value];
515
+
512
516
  const archived = {
513
517
  $version: 100000,
514
518
  $archiver: 'NSKeyedArchiver',
515
- $top: { root: new PlistUID(1) },
516
- $objects: ['$null', value],
519
+ $top: { root: new PlistUID(rootIndex) },
520
+ $objects: objects,
517
521
  };
518
522
 
519
523
  return createBinaryPlist(archived);
@@ -0,0 +1,97 @@
1
+ import { getLogger } from '../../../../lib/logger.js';
2
+ import type { Channel } from '../channel.js';
3
+ import { MessageAux } from '../dtx-message.js';
4
+ import type { DVTSecureSocketProxyService } from '../index.js';
5
+
6
+ const log = getLogger('ApplicationListing');
7
+
8
+ export interface iOSApplication {
9
+ /** Display name of the application/plugin */
10
+ DisplayName: string;
11
+
12
+ /** Bundle identifier in reverse domain notation */
13
+ CFBundleIdentifier: string;
14
+
15
+ /** Full path to the application bundle */
16
+ BundlePath: string;
17
+
18
+ /** Version string of the application */
19
+ Version: string;
20
+
21
+ /** Name of the main executable file */
22
+ ExecutableName: string;
23
+
24
+ /** Access restriction flag (0 = unrestricted, 1 = restricted) */
25
+ Restricted: number;
26
+
27
+ /** Bundle type (e.g., 'PluginKit', 'Application') */
28
+ Type: string;
29
+
30
+ /** Unique identifier for plugins */
31
+ PluginIdentifier: string;
32
+
33
+ /** UUID for the plugin instance */
34
+ PluginUUID: string;
35
+
36
+ /** Extension configuration with variable structure */
37
+ ExtensionDictionary?: Record<string, any>;
38
+
39
+ /** Bundle identifier of the containing app (plugins only) */
40
+ ContainerBundleIdentifier?: string;
41
+
42
+ /** Path to the container app bundle (plugins only) */
43
+ ContainerBundlePath?: string;
44
+ }
45
+
46
+ /**
47
+ * Application Listing service for retrieving installed applications
48
+ */
49
+ export class ApplicationListing {
50
+ static readonly IDENTIFIER =
51
+ 'com.apple.instruments.server.services.device.applictionListing';
52
+
53
+ private channel: Channel | null = null;
54
+
55
+ constructor(private readonly dvt: DVTSecureSocketProxyService) {}
56
+
57
+ /**
58
+ * Initialize the application listing channel
59
+ */
60
+ async initialize(): Promise<void> {
61
+ if (this.channel) {
62
+ return;
63
+ }
64
+ this.channel = await this.dvt.makeChannel(ApplicationListing.IDENTIFIER);
65
+ }
66
+
67
+ /**
68
+ * Get the list of installed applications from the device
69
+ * @returns {Promise<iOSApplication[]>}
70
+ */
71
+ async list(): Promise<iOSApplication[]> {
72
+ await this.initialize();
73
+
74
+ const args = new MessageAux().appendObj(null).appendObj(null);
75
+
76
+ await this.channel!.call(
77
+ 'installedApplicationsMatching_registerUpdateToken_',
78
+ )(args);
79
+
80
+ const result = await this.channel!.receivePlist();
81
+
82
+ if (!result) {
83
+ log.warn(
84
+ 'Received null/undefined response from installedApplicationsMatching',
85
+ );
86
+ return [];
87
+ }
88
+
89
+ if (Array.isArray(result)) {
90
+ return result;
91
+ }
92
+
93
+ throw new Error(
94
+ `Unexpected response format from installedApplicationsMatching: ${JSON.stringify(result)}`,
95
+ );
96
+ }
97
+ }
@@ -1,6 +1,7 @@
1
1
  import { getLogger } from '../../../lib/logger.js';
2
2
 
3
3
  const log = getLogger('NSKeyedArchiverDecoder');
4
+ const MAX_DECODE_DEPTH = 1000;
4
5
 
5
6
  /**
6
7
  * Decode NSKeyedArchiver formatted data into native JavaScript objects
@@ -79,50 +80,77 @@ export class NSKeyedArchiverDecoder {
79
80
  /**
80
81
  * Decode an object at a specific index
81
82
  */
82
- private decodeObject(index: number): any {
83
+ private decodeObject(
84
+ index: number,
85
+ visited: Set<number> = new Set(),
86
+ depth: number = 0,
87
+ ): any {
88
+ // Prevent stack overflow with depth limit
89
+ if (depth > MAX_DECODE_DEPTH) {
90
+ log.warn(`Maximum decode depth exceeded at index ${index}`);
91
+ return null;
92
+ }
83
93
  if (index < 0 || index >= this.objects.length) {
84
94
  return null;
85
95
  }
86
96
 
97
+ // Prevent infinite recursion
98
+ if (visited.has(index)) {
99
+ return null; // Return null for circular references
100
+ }
101
+
87
102
  // Check cache
88
103
  if (this.decoded.has(index)) {
89
104
  return this.decoded.get(index);
90
105
  }
91
106
 
107
+ visited.add(index);
92
108
  const obj = this.objects[index];
93
109
 
94
110
  // Handle null marker
95
111
  if (obj === '$null' || obj === null) {
112
+ visited.delete(index);
96
113
  return null;
97
114
  }
98
115
 
99
116
  // Handle primitive types
100
117
  if (typeof obj !== 'object') {
118
+ visited.delete(index);
101
119
  return obj;
102
120
  }
103
121
 
104
122
  // Handle Buffer/binary data (eg. screenshots)
105
123
  if (Buffer.isBuffer(obj)) {
106
124
  this.decoded.set(index, obj);
125
+ visited.delete(index);
107
126
  return obj;
108
127
  }
109
128
 
110
129
  // Handle UID references
111
130
  if ('CF$UID' in obj) {
112
- return this.decodeObject(obj.CF$UID);
131
+ const result = this.decodeObject(obj.CF$UID, visited, depth + 1);
132
+ visited.delete(index);
133
+ return result;
113
134
  }
114
135
 
115
136
  // Handle NSDictionary (NS.keys + NS.objects) - check this FIRST before NSArray
116
137
  if ('NS.keys' in obj && 'NS.objects' in obj) {
117
- const result = this.decodeDictionary(obj['NS.keys'], obj['NS.objects']);
138
+ const result = this.decodeDictionary(
139
+ obj['NS.keys'],
140
+ obj['NS.objects'],
141
+ visited,
142
+ depth,
143
+ );
118
144
  this.decoded.set(index, result);
145
+ visited.delete(index);
119
146
  return result;
120
147
  }
121
148
 
122
149
  // Handle NSArray (NS.objects only, without NS.keys)
123
150
  if ('NS.objects' in obj) {
124
- const result = this.decodeArray(obj['NS.objects']);
151
+ const result = this.decodeArray(obj['NS.objects'], visited, depth);
125
152
  this.decoded.set(index, result);
153
+ visited.delete(index);
126
154
  return result;
127
155
  }
128
156
 
@@ -135,20 +163,25 @@ export class NSKeyedArchiverDecoder {
135
163
 
136
164
  if (typeof value === 'number') {
137
165
  // Could be a reference or primitive
138
- const referenced = this.objects[value];
139
- if (
140
- referenced &&
141
- typeof referenced === 'object' &&
142
- referenced !== '$null'
143
- ) {
144
- result[key] = this.decodeObject(value);
166
+ if (value < this.objects.length && value >= 0) {
167
+ const referenced = this.objects[value];
168
+ if (
169
+ referenced &&
170
+ typeof referenced === 'object' &&
171
+ referenced !== '$null' &&
172
+ !visited.has(value)
173
+ ) {
174
+ result[key] = this.decodeObject(value, visited, depth + 1);
175
+ } else {
176
+ result[key] = value;
177
+ }
145
178
  } else {
146
179
  result[key] = value;
147
180
  }
148
181
  } else if (typeof value === 'object' && value && 'CF$UID' in value) {
149
182
  const uid = (value as any).CF$UID;
150
- if (typeof uid === 'number') {
151
- result[key] = this.decodeObject(uid);
183
+ if (typeof uid === 'number' && !visited.has(uid)) {
184
+ result[key] = this.decodeObject(uid, visited, depth + 1);
152
185
  } else {
153
186
  result[key] = value;
154
187
  }
@@ -158,22 +191,27 @@ export class NSKeyedArchiverDecoder {
158
191
  }
159
192
 
160
193
  this.decoded.set(index, result);
194
+ visited.delete(index);
161
195
  return result;
162
196
  }
163
197
 
164
198
  /**
165
199
  * Decode an NSArray
166
200
  */
167
- private decodeArray(refs: any): any[] {
201
+ private decodeArray(
202
+ refs: any,
203
+ visited: Set<number> = new Set(),
204
+ depth: number = 0,
205
+ ): any[] {
168
206
  if (!Array.isArray(refs)) {
169
207
  return [];
170
208
  }
171
209
 
172
210
  return refs.map((ref) => {
173
211
  if (typeof ref === 'number') {
174
- return this.decodeObject(ref);
212
+ return this.decodeObject(ref, visited, depth + 1);
175
213
  } else if (typeof ref === 'object' && ref && 'CF$UID' in ref) {
176
- return this.decodeObject(ref.CF$UID);
214
+ return this.decodeObject(ref.CF$UID, visited, depth + 1);
177
215
  }
178
216
  return ref;
179
217
  });
@@ -182,7 +220,12 @@ export class NSKeyedArchiverDecoder {
182
220
  /**
183
221
  * Decode an NSDictionary
184
222
  */
185
- private decodeDictionary(keyRefs: any, valueRefs: any): any {
223
+ private decodeDictionary(
224
+ keyRefs: any,
225
+ valueRefs: any,
226
+ visited: Set<number> = new Set(),
227
+ depth: number = 0,
228
+ ): any {
186
229
  if (!Array.isArray(keyRefs) || !Array.isArray(valueRefs)) {
187
230
  return {};
188
231
  }
@@ -190,8 +233,8 @@ export class NSKeyedArchiverDecoder {
190
233
  const result: any = {};
191
234
 
192
235
  for (let i = 0; i < keyRefs.length && i < valueRefs.length; i++) {
193
- const key = this.decodeObject(keyRefs[i]);
194
- const value = this.decodeObject(valueRefs[i]);
236
+ const key = this.decodeObject(keyRefs[i], visited, depth + 1);
237
+ const value = this.decodeObject(valueRefs[i], visited, depth + 1);
195
238
 
196
239
  if (typeof key === 'string') {
197
240
  result[key] = value;
package/src/services.ts CHANGED
@@ -18,6 +18,7 @@ import type {
18
18
  import AfcService from './services/ios/afc/index.js';
19
19
  import DiagnosticsService from './services/ios/diagnostic-service/index.js';
20
20
  import { DVTSecureSocketProxyService } from './services/ios/dvt/index.js';
21
+ import { ApplicationListing } from './services/ios/dvt/instruments/application-listing.js';
21
22
  import { ConditionInducer } from './services/ios/dvt/instruments/condition-inducer.js';
22
23
  import { Graphics } from './services/ios/dvt/instruments/graphics.js';
23
24
  import { LocationSimulation } from './services/ios/dvt/instruments/location-simulation.js';
@@ -203,6 +204,7 @@ export async function startDVTService(
203
204
  const locationSimulation = new LocationSimulation(dvtService);
204
205
  const conditionInducer = new ConditionInducer(dvtService);
205
206
  const screenshot = new Screenshot(dvtService);
207
+ const appListing = new ApplicationListing(dvtService);
206
208
  const graphics = new Graphics(dvtService);
207
209
 
208
210
  return {
@@ -211,6 +213,7 @@ export async function startDVTService(
211
213
  locationSimulation,
212
214
  conditionInducer,
213
215
  screenshot,
216
+ appListing,
214
217
  graphics,
215
218
  };
216
219
  }