appium-ios-remotexpc 5.7.0 → 5.7.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +6 -0
- package/build/src/lib/remote-xpc/xpc-value.d.ts +8 -0
- package/build/src/lib/remote-xpc/xpc-value.d.ts.map +1 -0
- package/build/src/lib/remote-xpc/xpc-value.js +10 -0
- package/build/src/lib/remote-xpc/xpc-value.js.map +1 -0
- package/build/src/services/ios/app-service/index.d.ts.map +1 -1
- package/build/src/services/ios/app-service/index.js +7 -12
- package/build/src/services/ios/app-service/index.js.map +1 -1
- package/build/src/services/ios/device-info/index.d.ts.map +1 -1
- package/build/src/services/ios/device-info/index.js +5 -10
- package/build/src/services/ios/device-info/index.js.map +1 -1
- package/build/src/services/ios/pasteboard/index.d.ts.map +1 -1
- package/build/src/services/ios/pasteboard/index.js +1 -6
- package/build/src/services/ios/pasteboard/index.js.map +1 -1
- package/package.json +1 -1
- package/src/lib/remote-xpc/xpc-value.ts +12 -0
- package/src/services/ios/app-service/index.ts +34 -35
- package/src/services/ios/device-info/index.ts +6 -12
- package/src/services/ios/pasteboard/index.ts +1 -7
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,9 @@
|
|
|
1
|
+
## [5.7.1](https://github.com/appium/appium-ios-remotexpc/compare/v5.7.0...v5.7.1) (2026-07-04)
|
|
2
|
+
|
|
3
|
+
### Code Refactoring
|
|
4
|
+
|
|
5
|
+
* **xpc:** centralize `asDictionary` helper ([#268](https://github.com/appium/appium-ios-remotexpc/issues/268)) ([ce9ec69](https://github.com/appium/appium-ios-remotexpc/commit/ce9ec69c6db6e2515fcfb8a262d920e6715f09e2))
|
|
6
|
+
|
|
1
7
|
## [5.7.0](https://github.com/appium/appium-ios-remotexpc/compare/v5.6.3...v5.7.0) (2026-07-03)
|
|
2
8
|
|
|
3
9
|
### Features
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { XPCDictionary, XPCValue } from '../types.js';
|
|
2
|
+
/**
|
|
3
|
+
* Coerces an XPC value to a dictionary, or `undefined` when it is not a plain
|
|
4
|
+
* object (an array, primitive, `Buffer`, `Uint8Array`, `Date`, `null`, or
|
|
5
|
+
* `undefined`).
|
|
6
|
+
*/
|
|
7
|
+
export declare function asDictionary(value: XPCValue | undefined): XPCDictionary | undefined;
|
|
8
|
+
//# sourceMappingURL=xpc-value.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"xpc-value.d.ts","sourceRoot":"","sources":["../../../../src/lib/remote-xpc/xpc-value.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAC,aAAa,EAAE,QAAQ,EAAC,MAAM,aAAa,CAAC;AAEzD;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,QAAQ,GAAG,SAAS,GAAG,aAAa,GAAG,SAAS,CAEnF"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { util } from '@appium/support';
|
|
2
|
+
/**
|
|
3
|
+
* Coerces an XPC value to a dictionary, or `undefined` when it is not a plain
|
|
4
|
+
* object (an array, primitive, `Buffer`, `Uint8Array`, `Date`, `null`, or
|
|
5
|
+
* `undefined`).
|
|
6
|
+
*/
|
|
7
|
+
export function asDictionary(value) {
|
|
8
|
+
return util.isPlainObject(value) ? value : undefined;
|
|
9
|
+
}
|
|
10
|
+
//# sourceMappingURL=xpc-value.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"xpc-value.js","sourceRoot":"","sources":["../../../../src/lib/remote-xpc/xpc-value.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,IAAI,EAAC,MAAM,iBAAiB,CAAC;AAIrC;;;;GAIG;AACH,MAAM,UAAU,YAAY,CAAC,KAA2B;IACtD,OAAO,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC,CAAE,KAAuB,CAAC,CAAC,CAAC,SAAS,CAAC;AAC1E,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/services/ios/app-service/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/services/ios/app-service/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { createPlist } from '../../../lib/plist/index.js';
|
|
2
|
+
import { asDictionary } from '../../../lib/remote-xpc/xpc-value.js';
|
|
2
3
|
import { CoreDeviceService } from '../core-device/core-device-service.js';
|
|
3
4
|
const FEATURE_LIST_APPS = 'com.apple.coredevice.feature.listapps';
|
|
4
5
|
const FEATURE_LAUNCH_APPLICATION = 'com.apple.coredevice.feature.launchapplication';
|
|
@@ -71,7 +72,7 @@ export class AppService extends CoreDeviceService {
|
|
|
71
72
|
const platformOptionsBuffer = Buffer.isBuffer(platformOptions)
|
|
72
73
|
? platformOptions
|
|
73
74
|
: Buffer.from(platformOptions, 'utf8');
|
|
74
|
-
const output =
|
|
75
|
+
const output = asDictionary(await this.invoke(FEATURE_LAUNCH_APPLICATION, {
|
|
75
76
|
applicationSpecifier: {
|
|
76
77
|
bundleIdentifier: { _0: bundleId },
|
|
77
78
|
},
|
|
@@ -85,7 +86,7 @@ export class AppService extends CoreDeviceService {
|
|
|
85
86
|
platformSpecificOptions: platformOptionsBuffer,
|
|
86
87
|
},
|
|
87
88
|
standardIOIdentifiers: {},
|
|
88
|
-
}, { timeoutMs: options.timeoutMs }));
|
|
89
|
+
}, { timeoutMs: options.timeoutMs })) ?? {};
|
|
89
90
|
return {
|
|
90
91
|
...output,
|
|
91
92
|
processIdentifier: extractProcessIdentifier(output),
|
|
@@ -95,7 +96,7 @@ export class AppService extends CoreDeviceService {
|
|
|
95
96
|
* Lists the processes currently running on the device.
|
|
96
97
|
*/
|
|
97
98
|
async listProcesses() {
|
|
98
|
-
const output =
|
|
99
|
+
const output = asDictionary(await this.invoke(FEATURE_LIST_PROCESSES)) ?? {};
|
|
99
100
|
return asArray(output.processTokens);
|
|
100
101
|
}
|
|
101
102
|
/**
|
|
@@ -106,10 +107,10 @@ export class AppService extends CoreDeviceService {
|
|
|
106
107
|
* reports `com.apple.dt.CoreDeviceError`).
|
|
107
108
|
*/
|
|
108
109
|
async sendSignalToProcess(pid, signal) {
|
|
109
|
-
return
|
|
110
|
+
return (asDictionary(await this.invoke(FEATURE_SEND_SIGNAL, {
|
|
110
111
|
process: { processIdentifier: pid },
|
|
111
112
|
signal,
|
|
112
|
-
}));
|
|
113
|
+
})) ?? {});
|
|
113
114
|
}
|
|
114
115
|
/**
|
|
115
116
|
* Uninstalls an application by bundle identifier. This is idempotent: the
|
|
@@ -125,15 +126,9 @@ export class AppService extends CoreDeviceService {
|
|
|
125
126
|
* `options` to bound how long to wait for a still-running process to exit.
|
|
126
127
|
*/
|
|
127
128
|
async monitorProcessTermination(pid, options = {}) {
|
|
128
|
-
return
|
|
129
|
+
return (asDictionary(await this.invoke(FEATURE_MONITOR_PROCESS_TERMINATION, { processToken: { processIdentifier: pid } }, options)) ?? {});
|
|
129
130
|
}
|
|
130
131
|
}
|
|
131
|
-
function asDict(value) {
|
|
132
|
-
if (value && typeof value === 'object' && !Array.isArray(value)) {
|
|
133
|
-
return value;
|
|
134
|
-
}
|
|
135
|
-
return {};
|
|
136
|
-
}
|
|
137
132
|
function asArray(value) {
|
|
138
133
|
return Array.isArray(value) ? value : [];
|
|
139
134
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/services/ios/app-service/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,WAAW,EAAC,MAAM,6BAA6B,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/services/ios/app-service/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/services/ios/device-info/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/services/ios/device-info/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAC,aAAa,EAAC,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAC,KAAK,uBAAuB,EAAE,iBAAiB,EAAC,MAAM,uCAAuC,CAAC;AAOtG,iFAAiF;AACjF,MAAM,WAAW,oBAAoB;IACnC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,mFAAmF;AACnF,MAAM,WAAW,qBAAqB;IACpC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,yEAAyE;AACzE,MAAM,WAAW,mBAAmB;IAClC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,qBAAa,qBAAsB,SAAQ,iBAAiB;IAC1D,MAAM,CAAC,QAAQ,CAAC,gBAAgB,qCAAqC;gBAEzD,IAAI,EAAE,MAAM;IAIxB;;;OAGG;IACG,aAAa,CAAC,OAAO,GAAE,uBAA4B,GAAG,OAAO,CAAC,oBAAoB,CAAC;IAIzF;;;OAGG;IACG,cAAc,CAAC,OAAO,GAAE,uBAA4B,GAAG,OAAO,CAAC,qBAAqB,CAAC;IAI3F;;;;;;;OAOG;IACG,YAAY,CAAC,OAAO,GAAE,uBAA4B,GAAG,OAAO,CAAC,mBAAmB,CAAC;IAIvF;;;;;;;OAOG;IACG,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,OAAO,GAAE,uBAA4B,GAAG,OAAO,CAAC,aAAa,CAAC;CAGxG;AAED,eAAe,qBAAqB,CAAC"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { asDictionary } from '../../../lib/remote-xpc/xpc-value.js';
|
|
1
2
|
import { CoreDeviceService } from '../core-device/core-device-service.js';
|
|
2
3
|
const FEATURE_GET_DEVICE_INFO = 'com.apple.coredevice.feature.getdeviceinfo';
|
|
3
4
|
const FEATURE_GET_DISPLAY_INFO = 'com.apple.coredevice.feature.getdisplayinfo';
|
|
@@ -32,14 +33,14 @@ export class CoreDeviceInfoService extends CoreDeviceService {
|
|
|
32
33
|
* device class, …).
|
|
33
34
|
*/
|
|
34
35
|
async getDeviceInfo(options = {}) {
|
|
35
|
-
return
|
|
36
|
+
return asDictionary(await this.invoke(FEATURE_GET_DEVICE_INFO, {}, options)) ?? {};
|
|
36
37
|
}
|
|
37
38
|
/**
|
|
38
39
|
* Returns display attributes (dimensions, scale, …). Useful for coordinate
|
|
39
40
|
* mapping and screenshot geometry.
|
|
40
41
|
*/
|
|
41
42
|
async getDisplayInfo(options = {}) {
|
|
42
|
-
return
|
|
43
|
+
return asDictionary(await this.invoke(FEATURE_GET_DISPLAY_INFO, {}, options)) ?? {};
|
|
43
44
|
}
|
|
44
45
|
/**
|
|
45
46
|
* Returns the device lock state (e.g. whether the screen is locked and
|
|
@@ -50,7 +51,7 @@ export class CoreDeviceInfoService extends CoreDeviceService {
|
|
|
50
51
|
* {@link CoreDeviceError}.
|
|
51
52
|
*/
|
|
52
53
|
async getLockState(options = {}) {
|
|
53
|
-
return
|
|
54
|
+
return asDictionary(await this.invoke(FEATURE_GET_LOCK_STATE, {}, options)) ?? {};
|
|
54
55
|
}
|
|
55
56
|
/**
|
|
56
57
|
* Queries MobileGestalt values for the given keys, returning a map of the
|
|
@@ -61,14 +62,8 @@ export class CoreDeviceInfoService extends CoreDeviceService {
|
|
|
61
62
|
* values. Pass `timeoutMs` via `options` to bound the wait.
|
|
62
63
|
*/
|
|
63
64
|
async queryMobileGestalt(keys, options = {}) {
|
|
64
|
-
return
|
|
65
|
+
return asDictionary(await this.invoke(FEATURE_QUERY_MOBILEGESTALT, { keys }, options)) ?? {};
|
|
65
66
|
}
|
|
66
67
|
}
|
|
67
|
-
function asDict(value) {
|
|
68
|
-
if (value && typeof value === 'object' && !Array.isArray(value)) {
|
|
69
|
-
return value;
|
|
70
|
-
}
|
|
71
|
-
return {};
|
|
72
|
-
}
|
|
73
68
|
export default CoreDeviceInfoService;
|
|
74
69
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/services/ios/device-info/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/services/ios/device-info/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,YAAY,EAAC,MAAM,sCAAsC,CAAC;AAElE,OAAO,EAA+B,iBAAiB,EAAC,MAAM,uCAAuC,CAAC;AAEtG,MAAM,uBAAuB,GAAG,4CAA4C,CAAC;AAC7E,MAAM,wBAAwB,GAAG,6CAA6C,CAAC;AAC/E,MAAM,sBAAsB,GAAG,2CAA2C,CAAC;AAC3E,MAAM,2BAA2B,GAAG,iDAAiD,CAAC;AAiBtF;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,OAAO,qBAAsB,SAAQ,iBAAiB;IAC1D,MAAM,CAAU,gBAAgB,GAAG,iCAAiC,CAAC;IAErE,YAAY,IAAY;QACtB,KAAK,CAAC,IAAI,EAAE,qBAAqB,CAAC,gBAAgB,CAAC,CAAC;IACtD,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,aAAa,CAAC,UAAmC,EAAE;QACvD,OAAO,YAAY,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,uBAAuB,EAAE,EAAE,EAAE,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC;IACrF,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,cAAc,CAAC,UAAmC,EAAE;QACxD,OAAO,YAAY,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,wBAAwB,EAAE,EAAE,EAAE,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC;IACtF,CAAC;IAED;;;;;;;OAOG;IACH,KAAK,CAAC,YAAY,CAAC,UAAmC,EAAE;QACtD,OAAO,YAAY,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,sBAAsB,EAAE,EAAE,EAAE,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC;IACpF,CAAC;IAED;;;;;;;OAOG;IACH,KAAK,CAAC,kBAAkB,CAAC,IAAc,EAAE,UAAmC,EAAE;QAC5E,OAAO,YAAY,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,2BAA2B,EAAE,EAAC,IAAI,EAAC,EAAE,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC;IAC7F,CAAC;;AAGH,eAAe,qBAAqB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/services/ios/pasteboard/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/services/ios/pasteboard/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAC,iBAAiB,EAAC,MAAM,uCAAuC,CAAC;AAYxE;;GAEG;AACH,qBAAa,iBAAkB,SAAQ,iBAAiB;IACtD,MAAM,CAAC,QAAQ,CAAC,gBAAgB,4CAA4C;gBAEhE,IAAI,EAAE,MAAM;IAIxB;;OAEG;IACG,OAAO,CAAC,cAAc,SAAqB,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;IAI/E;;OAEG;IACG,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,cAAc,SAAqB,GAAG,OAAO,CAAC,IAAI,CAAC;IAI/E;;OAEG;IACG,MAAM,CAAC,cAAc,SAAqB,GAAG,OAAO,CAAC,GAAG,GAAG,SAAS,CAAC;IAS3E;;OAEG;IACG,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,EAAE,cAAc,SAAqB,GAAG,OAAO,CAAC,IAAI,CAAC;IAInF;;;;OAIG;IACG,QAAQ,CAAC,cAAc,SAAqB,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;IAIhF;;;;;OAKG;IACG,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,UAAU,EAAE,cAAc,SAAqB,GAAG,OAAO,CAAC,IAAI,CAAC;IAI9F,OAAO,CAAC,MAAM,CAAC,aAAa;IAQ5B,OAAO,CAAC,MAAM,CAAC,YAAY;IAQ3B,OAAO,CAAC,MAAM,CAAC,cAAc;IAS7B,OAAO,CAAC,MAAM,CAAC,aAAa;IAuB5B,OAAO,CAAC,MAAM,CAAC,WAAW;YAmBZ,GAAG;YAcH,GAAG;CAiBlB;AAiBD,eAAe,iBAAiB,CAAC"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { asDictionary } from '../../../lib/remote-xpc/xpc-value.js';
|
|
1
2
|
import { CoreDeviceService } from '../core-device/core-device-service.js';
|
|
2
3
|
import { GENERAL_PASTEBOARD, IMAGE_UTIS, PASTEBOARD_COMMAND, PASTEBOARD_POLICY, PASTEBOARD_UTI, TEXT_UTIS, URL_UTIS, } from './constants.js';
|
|
3
4
|
/**
|
|
@@ -136,12 +137,6 @@ function pickSnapshot(snapshotOrReply) {
|
|
|
136
137
|
const pasteboard = asDictionary(snapshotOrReply.pasteboard);
|
|
137
138
|
return (pasteboard ?? snapshotOrReply);
|
|
138
139
|
}
|
|
139
|
-
function asDictionary(value) {
|
|
140
|
-
if (value && typeof value === 'object' && !Array.isArray(value)) {
|
|
141
|
-
return value;
|
|
142
|
-
}
|
|
143
|
-
return undefined;
|
|
144
|
-
}
|
|
145
140
|
function decodeUtf8(value) {
|
|
146
141
|
if (typeof value === 'string') {
|
|
147
142
|
return value;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/services/ios/pasteboard/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/services/ios/pasteboard/index.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import {util} from '@appium/support';
|
|
2
|
+
|
|
3
|
+
import type {XPCDictionary, XPCValue} from '../types.js';
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* Coerces an XPC value to a dictionary, or `undefined` when it is not a plain
|
|
7
|
+
* object (an array, primitive, `Buffer`, `Uint8Array`, `Date`, `null`, or
|
|
8
|
+
* `undefined`).
|
|
9
|
+
*/
|
|
10
|
+
export function asDictionary(value: XPCValue | undefined): XPCDictionary | undefined {
|
|
11
|
+
return util.isPlainObject(value) ? (value as XPCDictionary) : undefined;
|
|
12
|
+
}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import {createPlist} from '../../../lib/plist/index.js';
|
|
2
|
+
import {asDictionary} from '../../../lib/remote-xpc/xpc-value.js';
|
|
2
3
|
import type {PlistDictionary, XPCDictionary, XPCValue} from '../../../lib/types.js';
|
|
3
4
|
import {type CoreDeviceInvokeOptions, CoreDeviceService} from '../core-device/core-device-service.js';
|
|
4
5
|
|
|
@@ -158,27 +159,28 @@ export class AppService extends CoreDeviceService {
|
|
|
158
159
|
? platformOptions
|
|
159
160
|
: Buffer.from(platformOptions, 'utf8');
|
|
160
161
|
|
|
161
|
-
const output =
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
162
|
+
const output =
|
|
163
|
+
asDictionary(
|
|
164
|
+
await this.invoke(
|
|
165
|
+
FEATURE_LAUNCH_APPLICATION,
|
|
166
|
+
{
|
|
167
|
+
applicationSpecifier: {
|
|
168
|
+
bundleIdentifier: {_0: bundleId},
|
|
169
|
+
},
|
|
170
|
+
options: {
|
|
171
|
+
arguments: options.arguments ?? [],
|
|
172
|
+
environmentVariables: options.environment ?? {},
|
|
173
|
+
standardIOUsesPseudoterminals: true,
|
|
174
|
+
startStopped: options.startSuspended ?? false,
|
|
175
|
+
terminateExisting: options.terminateExisting ?? true,
|
|
176
|
+
user: {shortName: 'mobile'},
|
|
177
|
+
platformSpecificOptions: platformOptionsBuffer,
|
|
178
|
+
},
|
|
179
|
+
standardIOIdentifiers: {},
|
|
167
180
|
},
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
standardIOUsesPseudoterminals: true,
|
|
172
|
-
startStopped: options.startSuspended ?? false,
|
|
173
|
-
terminateExisting: options.terminateExisting ?? true,
|
|
174
|
-
user: {shortName: 'mobile'},
|
|
175
|
-
platformSpecificOptions: platformOptionsBuffer,
|
|
176
|
-
},
|
|
177
|
-
standardIOIdentifiers: {},
|
|
178
|
-
},
|
|
179
|
-
{timeoutMs: options.timeoutMs},
|
|
180
|
-
),
|
|
181
|
-
);
|
|
181
|
+
{timeoutMs: options.timeoutMs},
|
|
182
|
+
),
|
|
183
|
+
) ?? {};
|
|
182
184
|
|
|
183
185
|
return {
|
|
184
186
|
...output,
|
|
@@ -190,7 +192,7 @@ export class AppService extends CoreDeviceService {
|
|
|
190
192
|
* Lists the processes currently running on the device.
|
|
191
193
|
*/
|
|
192
194
|
async listProcesses(): Promise<AppServiceProcessToken[]> {
|
|
193
|
-
const output =
|
|
195
|
+
const output = asDictionary(await this.invoke(FEATURE_LIST_PROCESSES)) ?? {};
|
|
194
196
|
return asArray(output.processTokens) as AppServiceProcessToken[];
|
|
195
197
|
}
|
|
196
198
|
|
|
@@ -202,11 +204,13 @@ export class AppService extends CoreDeviceService {
|
|
|
202
204
|
* reports `com.apple.dt.CoreDeviceError`).
|
|
203
205
|
*/
|
|
204
206
|
async sendSignalToProcess(pid: number, signal: number): Promise<XPCDictionary> {
|
|
205
|
-
return
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
207
|
+
return (
|
|
208
|
+
asDictionary(
|
|
209
|
+
await this.invoke(FEATURE_SEND_SIGNAL, {
|
|
210
|
+
process: {processIdentifier: pid},
|
|
211
|
+
signal,
|
|
212
|
+
}),
|
|
213
|
+
) ?? {}
|
|
210
214
|
);
|
|
211
215
|
}
|
|
212
216
|
|
|
@@ -225,19 +229,14 @@ export class AppService extends CoreDeviceService {
|
|
|
225
229
|
* `options` to bound how long to wait for a still-running process to exit.
|
|
226
230
|
*/
|
|
227
231
|
async monitorProcessTermination(pid: number, options: CoreDeviceInvokeOptions = {}): Promise<XPCDictionary> {
|
|
228
|
-
return
|
|
229
|
-
|
|
232
|
+
return (
|
|
233
|
+
asDictionary(
|
|
234
|
+
await this.invoke(FEATURE_MONITOR_PROCESS_TERMINATION, {processToken: {processIdentifier: pid}}, options),
|
|
235
|
+
) ?? {}
|
|
230
236
|
);
|
|
231
237
|
}
|
|
232
238
|
}
|
|
233
239
|
|
|
234
|
-
function asDict(value: XPCValue): XPCDictionary {
|
|
235
|
-
if (value && typeof value === 'object' && !Array.isArray(value)) {
|
|
236
|
-
return value as XPCDictionary;
|
|
237
|
-
}
|
|
238
|
-
return {};
|
|
239
|
-
}
|
|
240
|
-
|
|
241
240
|
function asArray(value: XPCValue): XPCValue[] {
|
|
242
241
|
return Array.isArray(value) ? value : [];
|
|
243
242
|
}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import
|
|
1
|
+
import {asDictionary} from '../../../lib/remote-xpc/xpc-value.js';
|
|
2
|
+
import type {XPCDictionary} from '../../../lib/types.js';
|
|
2
3
|
import {type CoreDeviceInvokeOptions, CoreDeviceService} from '../core-device/core-device-service.js';
|
|
3
4
|
|
|
4
5
|
const FEATURE_GET_DEVICE_INFO = 'com.apple.coredevice.feature.getdeviceinfo';
|
|
@@ -52,7 +53,7 @@ export class CoreDeviceInfoService extends CoreDeviceService {
|
|
|
52
53
|
* device class, …).
|
|
53
54
|
*/
|
|
54
55
|
async getDeviceInfo(options: CoreDeviceInvokeOptions = {}): Promise<CoreDeviceAttributes> {
|
|
55
|
-
return
|
|
56
|
+
return asDictionary(await this.invoke(FEATURE_GET_DEVICE_INFO, {}, options)) ?? {};
|
|
56
57
|
}
|
|
57
58
|
|
|
58
59
|
/**
|
|
@@ -60,7 +61,7 @@ export class CoreDeviceInfoService extends CoreDeviceService {
|
|
|
60
61
|
* mapping and screenshot geometry.
|
|
61
62
|
*/
|
|
62
63
|
async getDisplayInfo(options: CoreDeviceInvokeOptions = {}): Promise<CoreDeviceDisplayInfo> {
|
|
63
|
-
return
|
|
64
|
+
return asDictionary(await this.invoke(FEATURE_GET_DISPLAY_INFO, {}, options)) ?? {};
|
|
64
65
|
}
|
|
65
66
|
|
|
66
67
|
/**
|
|
@@ -72,7 +73,7 @@ export class CoreDeviceInfoService extends CoreDeviceService {
|
|
|
72
73
|
* {@link CoreDeviceError}.
|
|
73
74
|
*/
|
|
74
75
|
async getLockState(options: CoreDeviceInvokeOptions = {}): Promise<CoreDeviceLockState> {
|
|
75
|
-
return
|
|
76
|
+
return asDictionary(await this.invoke(FEATURE_GET_LOCK_STATE, {}, options)) ?? {};
|
|
76
77
|
}
|
|
77
78
|
|
|
78
79
|
/**
|
|
@@ -84,15 +85,8 @@ export class CoreDeviceInfoService extends CoreDeviceService {
|
|
|
84
85
|
* values. Pass `timeoutMs` via `options` to bound the wait.
|
|
85
86
|
*/
|
|
86
87
|
async queryMobileGestalt(keys: string[], options: CoreDeviceInvokeOptions = {}): Promise<XPCDictionary> {
|
|
87
|
-
return
|
|
88
|
+
return asDictionary(await this.invoke(FEATURE_QUERY_MOBILEGESTALT, {keys}, options)) ?? {};
|
|
88
89
|
}
|
|
89
90
|
}
|
|
90
91
|
|
|
91
|
-
function asDict(value: XPCValue): XPCDictionary {
|
|
92
|
-
if (value && typeof value === 'object' && !Array.isArray(value)) {
|
|
93
|
-
return value as XPCDictionary;
|
|
94
|
-
}
|
|
95
|
-
return {};
|
|
96
|
-
}
|
|
97
|
-
|
|
98
92
|
export default CoreDeviceInfoService;
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import {asDictionary} from '../../../lib/remote-xpc/xpc-value.js';
|
|
1
2
|
import type {XPCDictionary, XPCValue} from '../../../lib/types.js';
|
|
2
3
|
import {CoreDeviceService} from '../core-device/core-device-service.js';
|
|
3
4
|
import {
|
|
@@ -178,13 +179,6 @@ function pickSnapshot(snapshotOrReply: XPCDictionary | PasteboardSnapshot | Past
|
|
|
178
179
|
return (pasteboard ?? snapshotOrReply) as PasteboardSnapshot;
|
|
179
180
|
}
|
|
180
181
|
|
|
181
|
-
function asDictionary(value: XPCValue | undefined): XPCDictionary | undefined {
|
|
182
|
-
if (value && typeof value === 'object' && !Array.isArray(value)) {
|
|
183
|
-
return value as XPCDictionary;
|
|
184
|
-
}
|
|
185
|
-
return undefined;
|
|
186
|
-
}
|
|
187
|
-
|
|
188
182
|
function decodeUtf8(value: XPCValue): string | undefined {
|
|
189
183
|
if (typeof value === 'string') {
|
|
190
184
|
return value;
|