@limrun/api 0.45.2 → 0.45.4

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.
Files changed (57) hide show
  1. package/CHANGELOG.md +8 -0
  2. package/http-proxy.d.mts +17 -0
  3. package/http-proxy.d.mts.map +1 -1
  4. package/http-proxy.d.ts +17 -0
  5. package/http-proxy.d.ts.map +1 -1
  6. package/http-proxy.js +114 -0
  7. package/http-proxy.js.map +1 -1
  8. package/http-proxy.mjs +113 -0
  9. package/http-proxy.mjs.map +1 -1
  10. package/index.d.mts +2 -1
  11. package/index.d.mts.map +1 -1
  12. package/index.d.ts +2 -1
  13. package/index.d.ts.map +1 -1
  14. package/index.js +9 -1
  15. package/index.js.map +1 -1
  16. package/index.mjs +2 -1
  17. package/index.mjs.map +1 -1
  18. package/ios-client.d.mts +11 -0
  19. package/ios-client.d.mts.map +1 -1
  20. package/ios-client.d.ts +11 -0
  21. package/ios-client.d.ts.map +1 -1
  22. package/ios-client.js +13 -0
  23. package/ios-client.js.map +1 -1
  24. package/ios-client.mjs +14 -1
  25. package/ios-client.mjs.map +1 -1
  26. package/ios-maestro.d.mts +34 -0
  27. package/ios-maestro.d.mts.map +1 -0
  28. package/ios-maestro.d.ts +34 -0
  29. package/ios-maestro.d.ts.map +1 -0
  30. package/ios-maestro.js +134 -0
  31. package/ios-maestro.js.map +1 -0
  32. package/ios-maestro.mjs +127 -0
  33. package/ios-maestro.mjs.map +1 -0
  34. package/ios-shim.js +69 -8
  35. package/ios-shim.js.map +1 -1
  36. package/ios-shim.mjs +69 -8
  37. package/ios-shim.mjs.map +1 -1
  38. package/package.json +12 -2
  39. package/src/http-proxy.ts +138 -0
  40. package/src/index.ts +16 -1
  41. package/src/ios-client.ts +32 -1
  42. package/src/ios-maestro.ts +154 -0
  43. package/src/ios-shim.ts +70 -8
  44. package/src/tunnel.ts +56 -6
  45. package/src/version.ts +1 -1
  46. package/tunnel.d.mts +6 -0
  47. package/tunnel.d.mts.map +1 -1
  48. package/tunnel.d.ts +6 -0
  49. package/tunnel.d.ts.map +1 -1
  50. package/tunnel.js +53 -6
  51. package/tunnel.js.map +1 -1
  52. package/tunnel.mjs +53 -6
  53. package/tunnel.mjs.map +1 -1
  54. package/version.d.mts +1 -1
  55. package/version.d.ts +1 -1
  56. package/version.js +1 -1
  57. package/version.mjs +1 -1
@@ -0,0 +1,34 @@
1
+ import type { InstanceClient } from "./ios-client.js";
2
+ export declare const MAESTRO_RUNNER_BUNDLE_ID = "dev.mobile.maestro-driver-iosUITests.xctrunner";
3
+ /** Port the patched Maestro XCTest runner listens on inside the simulator. */
4
+ export declare const MAESTRO_RUNNER_PORT = 22087;
5
+ export declare const maestroSpawnOptions: {
6
+ readonly shell: boolean;
7
+ };
8
+ export type MaestroRun = {
9
+ maestroVersion: string;
10
+ driverPort: number;
11
+ /** Environment overrides for the `maestro` process; merge over process.env. */
12
+ env: Record<string, string>;
13
+ /** Arguments to place between `maestro test` and the flow arguments. */
14
+ args: string[];
15
+ };
16
+ /**
17
+ * Wire a locally installed stock Maestro CLI to this instance's remote XCTest
18
+ * runner: starts the xcrun shim and an HTTP forward proxy, and returns the
19
+ * environment and `maestro test` arguments that route the driver traffic to
20
+ * the remote runner. Both are torn down when the client disconnects.
21
+ *
22
+ * Maestro's driver talks plain HTTP to 127.0.0.1:<driverPort>. Nothing listens
23
+ * there: the JVM proxy settings route those requests (absolute-form) to the
24
+ * forward proxy, which rewrites them to the remote runner and passes other
25
+ * targets through.
26
+ */
27
+ export declare function prepareMaestroRun(client: InstanceClient, options: {
28
+ runnerUrl: string;
29
+ }): Promise<MaestroRun>;
30
+ /** Poll the remote Maestro XCTest runner until it responds, e.g. right after launching it. */
31
+ export declare function waitForMaestroRunner(runnerUrl: string, token: string, timeoutMs?: number): Promise<boolean>;
32
+ /** Probe the remote Maestro XCTest runner's /status endpoint. */
33
+ export declare function isMaestroRunnerRunning(runnerUrl: string, token: string): Promise<boolean>;
34
+ //# sourceMappingURL=ios-maestro.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ios-maestro.d.ts","sourceRoot":"","sources":["src/ios-maestro.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,cAAc,EAAE,wBAAqB;AAEnD,eAAO,MAAM,wBAAwB,mDAAmD,CAAC;AACzF,8EAA8E;AAC9E,eAAO,MAAM,mBAAmB,QAAQ,CAAC;AAIzC,eAAO,MAAM,mBAAmB;;CAAmD,CAAC;AAEpF,MAAM,MAAM,UAAU,GAAG;IACvB,cAAc,EAAE,MAAM,CAAC;IACvB,UAAU,EAAE,MAAM,CAAC;IACnB,+EAA+E;IAC/E,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC5B,wEAAwE;IACxE,IAAI,EAAE,MAAM,EAAE,CAAC;CAChB,CAAC;AAEF;;;;;;;;;;GAUG;AACH,wBAAsB,iBAAiB,CACrC,MAAM,EAAE,cAAc,EACtB,OAAO,EAAE;IAAE,SAAS,EAAE,MAAM,CAAA;CAAE,GAC7B,OAAO,CAAC,UAAU,CAAC,CAiCrB;AAED,8FAA8F;AAC9F,wBAAsB,oBAAoB,CACxC,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,MAAM,EACb,SAAS,SAAQ,GAChB,OAAO,CAAC,OAAO,CAAC,CASlB;AAED,iEAAiE;AACjE,wBAAsB,sBAAsB,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAe/F"}
package/ios-maestro.js ADDED
@@ -0,0 +1,134 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.maestroSpawnOptions = exports.MAESTRO_RUNNER_PORT = exports.MAESTRO_RUNNER_BUNDLE_ID = void 0;
4
+ exports.prepareMaestroRun = prepareMaestroRun;
5
+ exports.waitForMaestroRunner = waitForMaestroRunner;
6
+ exports.isMaestroRunnerRunning = isMaestroRunnerRunning;
7
+ const tslib_1 = require("./internal/tslib.js");
8
+ const path_1 = tslib_1.__importDefault(require("path"));
9
+ const net_1 = tslib_1.__importDefault(require("net"));
10
+ const child_process_1 = require("child_process");
11
+ exports.MAESTRO_RUNNER_BUNDLE_ID = 'dev.mobile.maestro-driver-iosUITests.xctrunner';
12
+ /** Port the patched Maestro XCTest runner listens on inside the simulator. */
13
+ exports.MAESTRO_RUNNER_PORT = 22087;
14
+ // Maestro installs as a .bat/.cmd wrapper on Windows, which spawn can only
15
+ // execute through a shell.
16
+ exports.maestroSpawnOptions = { shell: process.platform === 'win32' };
17
+ /**
18
+ * Wire a locally installed stock Maestro CLI to this instance's remote XCTest
19
+ * runner: starts the xcrun shim and an HTTP forward proxy, and returns the
20
+ * environment and `maestro test` arguments that route the driver traffic to
21
+ * the remote runner. Both are torn down when the client disconnects.
22
+ *
23
+ * Maestro's driver talks plain HTTP to 127.0.0.1:<driverPort>. Nothing listens
24
+ * there: the JVM proxy settings route those requests (absolute-form) to the
25
+ * forward proxy, which rewrites them to the remote runner and passes other
26
+ * targets through.
27
+ */
28
+ async function prepareMaestroRun(client, options) {
29
+ const [maestroVersion, shimDir] = await Promise.all([detectMaestroVersion(), client.startXcrunShim()]);
30
+ // Maestro 2.5.x hardcodes driver port 7001 and has no --driver-host-port
31
+ // flag; 2.6+ picks a random port unless the flag is passed.
32
+ const withDriverHostPortFlag = supportsDriverHostPort(maestroVersion);
33
+ const driverPort = withDriverHostPortFlag ? await findFreePort() : 7001;
34
+ const proxyPort = await client.startForwardHttpProxy({
35
+ remoteBaseUrl: options.runnerUrl,
36
+ matchPort: driverPort,
37
+ });
38
+ const maestroOpts = [
39
+ process.env['MAESTRO_OPTS'],
40
+ `-Dhttp.proxyHost=127.0.0.1 -Dhttp.proxyPort=${proxyPort} -Dhttp.nonProxyHosts=`,
41
+ ]
42
+ .filter(Boolean)
43
+ .join(' ');
44
+ return {
45
+ maestroVersion,
46
+ driverPort,
47
+ env: {
48
+ MAESTRO_OPTS: maestroOpts,
49
+ PATH: `${shimDir}${path_1.default.delimiter}${process.env['PATH'] ?? ''}`,
50
+ USE_XCODE_TEST_RUNNER: '1',
51
+ },
52
+ args: [
53
+ '--platform',
54
+ 'ios',
55
+ '--device',
56
+ client.deviceInfo.udid,
57
+ '--no-reinstall-driver',
58
+ ...(withDriverHostPortFlag ? ['--driver-host-port', String(driverPort)] : []),
59
+ ],
60
+ };
61
+ }
62
+ /** Poll the remote Maestro XCTest runner until it responds, e.g. right after launching it. */
63
+ async function waitForMaestroRunner(runnerUrl, token, timeoutMs = 15000) {
64
+ const deadline = Date.now() + timeoutMs;
65
+ while (Date.now() < deadline) {
66
+ if (await isMaestroRunnerRunning(runnerUrl, token)) {
67
+ return true;
68
+ }
69
+ await new Promise((resolve) => setTimeout(resolve, 500));
70
+ }
71
+ return false;
72
+ }
73
+ /** Probe the remote Maestro XCTest runner's /status endpoint. */
74
+ async function isMaestroRunnerRunning(runnerUrl, token) {
75
+ const controller = new AbortController();
76
+ const timeout = setTimeout(() => controller.abort(), 3000);
77
+ try {
78
+ const response = await fetch(`${runnerUrl}/status`, {
79
+ headers: { Authorization: `Bearer ${token}` },
80
+ signal: controller.signal,
81
+ });
82
+ return response.ok;
83
+ }
84
+ catch {
85
+ return false;
86
+ }
87
+ finally {
88
+ // Also on failure: a pending timer keeps the event loop alive.
89
+ clearTimeout(timeout);
90
+ }
91
+ }
92
+ function detectMaestroVersion() {
93
+ return new Promise((resolve, reject) => {
94
+ (0, child_process_1.execFile)('maestro', ['--version'], { encoding: 'utf8', ...exports.maestroSpawnOptions }, (error, stdout) => {
95
+ if (error) {
96
+ reject(new Error('Failed to run `maestro --version`. Install the Maestro CLI first: https://docs.maestro.dev/getting-started/installing-maestro'));
97
+ return;
98
+ }
99
+ // stdout only: update notices can also start with a version string and
100
+ // land on stderr or after the real version.
101
+ const version = stdout
102
+ .split('\n')
103
+ .map((line) => line.trim())
104
+ .find((line) => /^\d+\.\d+\.\d+/.test(line));
105
+ if (!version) {
106
+ reject(new Error('Could not parse the Maestro CLI version from `maestro --version` output.'));
107
+ return;
108
+ }
109
+ resolve(version);
110
+ });
111
+ });
112
+ }
113
+ function supportsDriverHostPort(version) {
114
+ const [major = 0, minor = 0] = version.split('.').map((part) => Number.parseInt(part, 10) || 0);
115
+ return major > 2 || (major === 2 && minor >= 6);
116
+ }
117
+ // Finds a free port and releases it immediately: Maestro validates that the
118
+ // driver port is bindable, so it must stay unbound on our side.
119
+ function findFreePort() {
120
+ return new Promise((resolve, reject) => {
121
+ const server = net_1.default.createServer();
122
+ server.once('error', reject);
123
+ server.listen(0, '127.0.0.1', () => {
124
+ const address = server.address();
125
+ if (!address || typeof address === 'string') {
126
+ server.close();
127
+ reject(new Error('Failed to find a free port.'));
128
+ return;
129
+ }
130
+ server.close(() => resolve(address.port));
131
+ });
132
+ });
133
+ }
134
+ //# sourceMappingURL=ios-maestro.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ios-maestro.js","sourceRoot":"","sources":["src/ios-maestro.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,127 @@
1
+ import path from 'path';
2
+ import net from 'net';
3
+ import { execFile } from 'child_process';
4
+ export const MAESTRO_RUNNER_BUNDLE_ID = 'dev.mobile.maestro-driver-iosUITests.xctrunner';
5
+ /** Port the patched Maestro XCTest runner listens on inside the simulator. */
6
+ export const MAESTRO_RUNNER_PORT = 22087;
7
+ // Maestro installs as a .bat/.cmd wrapper on Windows, which spawn can only
8
+ // execute through a shell.
9
+ export const maestroSpawnOptions = { shell: process.platform === 'win32' };
10
+ /**
11
+ * Wire a locally installed stock Maestro CLI to this instance's remote XCTest
12
+ * runner: starts the xcrun shim and an HTTP forward proxy, and returns the
13
+ * environment and `maestro test` arguments that route the driver traffic to
14
+ * the remote runner. Both are torn down when the client disconnects.
15
+ *
16
+ * Maestro's driver talks plain HTTP to 127.0.0.1:<driverPort>. Nothing listens
17
+ * there: the JVM proxy settings route those requests (absolute-form) to the
18
+ * forward proxy, which rewrites them to the remote runner and passes other
19
+ * targets through.
20
+ */
21
+ export async function prepareMaestroRun(client, options) {
22
+ const [maestroVersion, shimDir] = await Promise.all([detectMaestroVersion(), client.startXcrunShim()]);
23
+ // Maestro 2.5.x hardcodes driver port 7001 and has no --driver-host-port
24
+ // flag; 2.6+ picks a random port unless the flag is passed.
25
+ const withDriverHostPortFlag = supportsDriverHostPort(maestroVersion);
26
+ const driverPort = withDriverHostPortFlag ? await findFreePort() : 7001;
27
+ const proxyPort = await client.startForwardHttpProxy({
28
+ remoteBaseUrl: options.runnerUrl,
29
+ matchPort: driverPort,
30
+ });
31
+ const maestroOpts = [
32
+ process.env['MAESTRO_OPTS'],
33
+ `-Dhttp.proxyHost=127.0.0.1 -Dhttp.proxyPort=${proxyPort} -Dhttp.nonProxyHosts=`,
34
+ ]
35
+ .filter(Boolean)
36
+ .join(' ');
37
+ return {
38
+ maestroVersion,
39
+ driverPort,
40
+ env: {
41
+ MAESTRO_OPTS: maestroOpts,
42
+ PATH: `${shimDir}${path.delimiter}${process.env['PATH'] ?? ''}`,
43
+ USE_XCODE_TEST_RUNNER: '1',
44
+ },
45
+ args: [
46
+ '--platform',
47
+ 'ios',
48
+ '--device',
49
+ client.deviceInfo.udid,
50
+ '--no-reinstall-driver',
51
+ ...(withDriverHostPortFlag ? ['--driver-host-port', String(driverPort)] : []),
52
+ ],
53
+ };
54
+ }
55
+ /** Poll the remote Maestro XCTest runner until it responds, e.g. right after launching it. */
56
+ export async function waitForMaestroRunner(runnerUrl, token, timeoutMs = 15000) {
57
+ const deadline = Date.now() + timeoutMs;
58
+ while (Date.now() < deadline) {
59
+ if (await isMaestroRunnerRunning(runnerUrl, token)) {
60
+ return true;
61
+ }
62
+ await new Promise((resolve) => setTimeout(resolve, 500));
63
+ }
64
+ return false;
65
+ }
66
+ /** Probe the remote Maestro XCTest runner's /status endpoint. */
67
+ export async function isMaestroRunnerRunning(runnerUrl, token) {
68
+ const controller = new AbortController();
69
+ const timeout = setTimeout(() => controller.abort(), 3000);
70
+ try {
71
+ const response = await fetch(`${runnerUrl}/status`, {
72
+ headers: { Authorization: `Bearer ${token}` },
73
+ signal: controller.signal,
74
+ });
75
+ return response.ok;
76
+ }
77
+ catch {
78
+ return false;
79
+ }
80
+ finally {
81
+ // Also on failure: a pending timer keeps the event loop alive.
82
+ clearTimeout(timeout);
83
+ }
84
+ }
85
+ function detectMaestroVersion() {
86
+ return new Promise((resolve, reject) => {
87
+ execFile('maestro', ['--version'], { encoding: 'utf8', ...maestroSpawnOptions }, (error, stdout) => {
88
+ if (error) {
89
+ reject(new Error('Failed to run `maestro --version`. Install the Maestro CLI first: https://docs.maestro.dev/getting-started/installing-maestro'));
90
+ return;
91
+ }
92
+ // stdout only: update notices can also start with a version string and
93
+ // land on stderr or after the real version.
94
+ const version = stdout
95
+ .split('\n')
96
+ .map((line) => line.trim())
97
+ .find((line) => /^\d+\.\d+\.\d+/.test(line));
98
+ if (!version) {
99
+ reject(new Error('Could not parse the Maestro CLI version from `maestro --version` output.'));
100
+ return;
101
+ }
102
+ resolve(version);
103
+ });
104
+ });
105
+ }
106
+ function supportsDriverHostPort(version) {
107
+ const [major = 0, minor = 0] = version.split('.').map((part) => Number.parseInt(part, 10) || 0);
108
+ return major > 2 || (major === 2 && minor >= 6);
109
+ }
110
+ // Finds a free port and releases it immediately: Maestro validates that the
111
+ // driver port is bindable, so it must stay unbound on our side.
112
+ function findFreePort() {
113
+ return new Promise((resolve, reject) => {
114
+ const server = net.createServer();
115
+ server.once('error', reject);
116
+ server.listen(0, '127.0.0.1', () => {
117
+ const address = server.address();
118
+ if (!address || typeof address === 'string') {
119
+ server.close();
120
+ reject(new Error('Failed to find a free port.'));
121
+ return;
122
+ }
123
+ server.close(() => resolve(address.port));
124
+ });
125
+ });
126
+ }
127
+ //# sourceMappingURL=ios-maestro.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ios-maestro.mjs","sourceRoot":"","sources":["src/ios-maestro.ts"],"names":[],"mappings":"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"}
package/ios-shim.js CHANGED
@@ -72,6 +72,9 @@ async function createXcrunShim(options) {
72
72
  return dir;
73
73
  }
74
74
  async function handleShimmedXcrun(client, udid, args) {
75
+ if (args[0] === 'devicectl') {
76
+ return devicectlListDevices(args);
77
+ }
75
78
  if (args[0] !== 'simctl') {
76
79
  return { code: 127, stdout: '', stderr: `unsupported xcrun command: ${args.join(' ')}` };
77
80
  }
@@ -111,6 +114,42 @@ async function handleShimmedXcrun(client, udid, args) {
111
114
  }
112
115
  return await client.simctl(simctlArgs).wait();
113
116
  }
117
+ // There are never physical devices behind the shim, so `devicectl list
118
+ // devices` gets an empty device list in the shape Maestro's picker parses.
119
+ // Flags can precede the subcommand (devicectl --json-output <path> list
120
+ // devices), so match on positionals.
121
+ function devicectlListDevices(args) {
122
+ const positionals = [];
123
+ for (let i = 1; i < args.length; i++) {
124
+ if (args[i] === '--json-output') {
125
+ i++;
126
+ continue;
127
+ }
128
+ if (args[i].startsWith('-'))
129
+ continue;
130
+ positionals.push(args[i]);
131
+ }
132
+ if (positionals[0] !== 'list' || positionals[1] !== 'devices') {
133
+ return { code: 127, stdout: '', stderr: `unsupported devicectl command: ${args.join(' ')}` };
134
+ }
135
+ const payload = JSON.stringify({ result: { devices: [] } });
136
+ const jsonOutIndex = args.indexOf('--json-output');
137
+ const jsonOutPath = jsonOutIndex === -1 ? undefined : args[jsonOutIndex + 1];
138
+ if (jsonOutPath && jsonOutPath !== '-') {
139
+ try {
140
+ fs_1.default.writeFileSync(jsonOutPath, payload);
141
+ }
142
+ catch (error) {
143
+ return {
144
+ code: 1,
145
+ stdout: '',
146
+ stderr: `could not write devicectl output to ${jsonOutPath}: ${error instanceof Error ? error.message : String(error)}`,
147
+ };
148
+ }
149
+ return { code: 0, stdout: '', stderr: '' };
150
+ }
151
+ return { code: 0, stdout: `${payload}\n`, stderr: '' };
152
+ }
114
153
  function simctlList(udid, simctlArgs) {
115
154
  if (!simctlArgs.includes('-j')) {
116
155
  return { code: 64, stdout: '', stderr: 'limrun xcrun shim only supports `xcrun simctl list -j`.' };
@@ -221,8 +260,9 @@ function toSimctlListApps(apps) {
221
260
  }
222
261
  function xcrunShimSource(options) {
223
262
  // Keep the executable tiny: it decides whether this is a Limrun-targeted
224
- // simctl call, then asks the local shim server to perform the real work.
225
- // Non-Limrun calls still delegate to the host xcrun.
263
+ // simctl call (or a devicectl device enumeration), then asks the local shim
264
+ // server to perform the real work. Non-Limrun calls still delegate to the
265
+ // host xcrun.
226
266
  const embeddedShimUrl = options ? JSON.stringify(options.shimUrl) : 'process.env.LIMRUN_XCRUN_SHIM_URL';
227
267
  const embeddedUdid = options ? JSON.stringify(options.udid) : 'process.env.LIMRUN_IOS_UDID';
228
268
  return `#!/usr/bin/env node
@@ -246,7 +286,26 @@ function fail(message) {
246
286
  process.exit(64);
247
287
  }
248
288
 
249
- if (args[0] !== 'simctl') {
289
+ // Physical-device enumeration (e.g. Maestro's device picker) is answered by
290
+ // the shim server; real devicectl does not exist off macOS. Every other
291
+ // devicectl subcommand delegates. Flags can precede the subcommand
292
+ // (devicectl --json-output <path> list devices), so match on positionals.
293
+ function devicectlPositionals(args) {
294
+ const positionals = [];
295
+ for (let i = 1; i < args.length; i++) {
296
+ if (args[i] === '--json-output') {
297
+ i++;
298
+ continue;
299
+ }
300
+ if (args[i].startsWith('-')) continue;
301
+ positionals.push(args[i]);
302
+ }
303
+ return positionals;
304
+ }
305
+ const devicectlSubcommand = args[0] === 'devicectl' ? devicectlPositionals(args) : [];
306
+ const isDevicectlListDevices = devicectlSubcommand[0] === 'list' && devicectlSubcommand[1] === 'devices';
307
+
308
+ if (args[0] !== 'simctl' && !isDevicectlListDevices) {
250
309
  delegate();
251
310
  }
252
311
 
@@ -256,21 +315,23 @@ if (!shimUrl || !udid) {
256
315
  fail('LIMRUN_XCRUN_SHIM_URL and LIMRUN_IOS_UDID are required.');
257
316
  }
258
317
 
259
- const simctlArgs = args.slice(1);
260
- const command = simctlArgs[0];
261
318
  function simctlTarget(command, simctlArgs) {
262
319
  if (command === 'launch') {
263
320
  return simctlArgs.slice(1).find((arg) => !arg.startsWith('-'));
264
321
  }
265
322
  return simctlArgs[1];
266
323
  }
267
- const target = simctlTarget(command, simctlArgs);
268
324
  function isLimrunTarget(value) {
269
325
  return value === udid || value === 'booted';
270
326
  }
271
327
 
272
- if (command !== 'list' && !isLimrunTarget(target)) {
273
- delegate();
328
+ if (args[0] === 'simctl') {
329
+ const simctlArgs = args.slice(1);
330
+ const command = simctlArgs[0];
331
+ const target = simctlTarget(command, simctlArgs);
332
+ if (command !== 'list' && !isLimrunTarget(target)) {
333
+ delegate();
334
+ }
274
335
  }
275
336
 
276
337
  const parsed = new URL(shimUrl);
package/ios-shim.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"ios-shim.js","sourceRoot":"","sources":["src/ios-shim.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ios-shim.js","sourceRoot":"","sources":["src/ios-shim.ts"],"names":[],"mappings":"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"}
package/ios-shim.mjs CHANGED
@@ -66,6 +66,9 @@ export async function createXcrunShim(options) {
66
66
  return dir;
67
67
  }
68
68
  async function handleShimmedXcrun(client, udid, args) {
69
+ if (args[0] === 'devicectl') {
70
+ return devicectlListDevices(args);
71
+ }
69
72
  if (args[0] !== 'simctl') {
70
73
  return { code: 127, stdout: '', stderr: `unsupported xcrun command: ${args.join(' ')}` };
71
74
  }
@@ -105,6 +108,42 @@ async function handleShimmedXcrun(client, udid, args) {
105
108
  }
106
109
  return await client.simctl(simctlArgs).wait();
107
110
  }
111
+ // There are never physical devices behind the shim, so `devicectl list
112
+ // devices` gets an empty device list in the shape Maestro's picker parses.
113
+ // Flags can precede the subcommand (devicectl --json-output <path> list
114
+ // devices), so match on positionals.
115
+ function devicectlListDevices(args) {
116
+ const positionals = [];
117
+ for (let i = 1; i < args.length; i++) {
118
+ if (args[i] === '--json-output') {
119
+ i++;
120
+ continue;
121
+ }
122
+ if (args[i].startsWith('-'))
123
+ continue;
124
+ positionals.push(args[i]);
125
+ }
126
+ if (positionals[0] !== 'list' || positionals[1] !== 'devices') {
127
+ return { code: 127, stdout: '', stderr: `unsupported devicectl command: ${args.join(' ')}` };
128
+ }
129
+ const payload = JSON.stringify({ result: { devices: [] } });
130
+ const jsonOutIndex = args.indexOf('--json-output');
131
+ const jsonOutPath = jsonOutIndex === -1 ? undefined : args[jsonOutIndex + 1];
132
+ if (jsonOutPath && jsonOutPath !== '-') {
133
+ try {
134
+ fs.writeFileSync(jsonOutPath, payload);
135
+ }
136
+ catch (error) {
137
+ return {
138
+ code: 1,
139
+ stdout: '',
140
+ stderr: `could not write devicectl output to ${jsonOutPath}: ${error instanceof Error ? error.message : String(error)}`,
141
+ };
142
+ }
143
+ return { code: 0, stdout: '', stderr: '' };
144
+ }
145
+ return { code: 0, stdout: `${payload}\n`, stderr: '' };
146
+ }
108
147
  function simctlList(udid, simctlArgs) {
109
148
  if (!simctlArgs.includes('-j')) {
110
149
  return { code: 64, stdout: '', stderr: 'limrun xcrun shim only supports `xcrun simctl list -j`.' };
@@ -215,8 +254,9 @@ function toSimctlListApps(apps) {
215
254
  }
216
255
  function xcrunShimSource(options) {
217
256
  // Keep the executable tiny: it decides whether this is a Limrun-targeted
218
- // simctl call, then asks the local shim server to perform the real work.
219
- // Non-Limrun calls still delegate to the host xcrun.
257
+ // simctl call (or a devicectl device enumeration), then asks the local shim
258
+ // server to perform the real work. Non-Limrun calls still delegate to the
259
+ // host xcrun.
220
260
  const embeddedShimUrl = options ? JSON.stringify(options.shimUrl) : 'process.env.LIMRUN_XCRUN_SHIM_URL';
221
261
  const embeddedUdid = options ? JSON.stringify(options.udid) : 'process.env.LIMRUN_IOS_UDID';
222
262
  return `#!/usr/bin/env node
@@ -240,7 +280,26 @@ function fail(message) {
240
280
  process.exit(64);
241
281
  }
242
282
 
243
- if (args[0] !== 'simctl') {
283
+ // Physical-device enumeration (e.g. Maestro's device picker) is answered by
284
+ // the shim server; real devicectl does not exist off macOS. Every other
285
+ // devicectl subcommand delegates. Flags can precede the subcommand
286
+ // (devicectl --json-output <path> list devices), so match on positionals.
287
+ function devicectlPositionals(args) {
288
+ const positionals = [];
289
+ for (let i = 1; i < args.length; i++) {
290
+ if (args[i] === '--json-output') {
291
+ i++;
292
+ continue;
293
+ }
294
+ if (args[i].startsWith('-')) continue;
295
+ positionals.push(args[i]);
296
+ }
297
+ return positionals;
298
+ }
299
+ const devicectlSubcommand = args[0] === 'devicectl' ? devicectlPositionals(args) : [];
300
+ const isDevicectlListDevices = devicectlSubcommand[0] === 'list' && devicectlSubcommand[1] === 'devices';
301
+
302
+ if (args[0] !== 'simctl' && !isDevicectlListDevices) {
244
303
  delegate();
245
304
  }
246
305
 
@@ -250,21 +309,23 @@ if (!shimUrl || !udid) {
250
309
  fail('LIMRUN_XCRUN_SHIM_URL and LIMRUN_IOS_UDID are required.');
251
310
  }
252
311
 
253
- const simctlArgs = args.slice(1);
254
- const command = simctlArgs[0];
255
312
  function simctlTarget(command, simctlArgs) {
256
313
  if (command === 'launch') {
257
314
  return simctlArgs.slice(1).find((arg) => !arg.startsWith('-'));
258
315
  }
259
316
  return simctlArgs[1];
260
317
  }
261
- const target = simctlTarget(command, simctlArgs);
262
318
  function isLimrunTarget(value) {
263
319
  return value === udid || value === 'booted';
264
320
  }
265
321
 
266
- if (command !== 'list' && !isLimrunTarget(target)) {
267
- delegate();
322
+ if (args[0] === 'simctl') {
323
+ const simctlArgs = args.slice(1);
324
+ const command = simctlArgs[0];
325
+ const target = simctlTarget(command, simctlArgs);
326
+ if (command !== 'list' && !isLimrunTarget(target)) {
327
+ delegate();
328
+ }
268
329
  }
269
330
 
270
331
  const parsed = new URL(shimUrl);
package/ios-shim.mjs.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"ios-shim.mjs","sourceRoot":"","sources":["src/ios-shim.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ios-shim.mjs","sourceRoot":"","sources":["src/ios-shim.ts"],"names":[],"mappings":"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"}