@tapflowio/ios-agent 0.29.0 → 0.31.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/bin/guest-helper +0 -0
- package/bin/screencapture-helper +0 -0
- package/dist/AudioCaptureStreamer.d.ts +3 -2
- package/dist/AudioCaptureStreamer.d.ts.map +1 -1
- package/dist/AudioCaptureStreamer.js +16 -10
- package/dist/AudioCaptureStreamer.js.map +1 -1
- package/dist/DeviceChromeLoader.d.ts +28 -1
- package/dist/DeviceChromeLoader.d.ts.map +1 -1
- package/dist/DeviceChromeLoader.js +118 -37
- package/dist/DeviceChromeLoader.js.map +1 -1
- package/dist/FoldableInput.d.ts +58 -0
- package/dist/FoldableInput.d.ts.map +1 -0
- package/dist/FoldableInput.js +166 -0
- package/dist/FoldableInput.js.map +1 -0
- package/dist/GuestHelper.d.ts +109 -0
- package/dist/GuestHelper.d.ts.map +1 -0
- package/dist/GuestHelper.js +437 -0
- package/dist/GuestHelper.js.map +1 -0
- package/dist/IOSAgent.d.ts +126 -4
- package/dist/IOSAgent.d.ts.map +1 -1
- package/dist/IOSAgent.js +673 -62
- package/dist/IOSAgent.js.map +1 -1
- package/dist/InputChannel.d.ts +38 -0
- package/dist/InputChannel.d.ts.map +1 -0
- package/dist/InputChannel.js +7 -0
- package/dist/InputChannel.js.map +1 -0
- package/dist/PanelState.d.ts +72 -0
- package/dist/PanelState.d.ts.map +1 -0
- package/dist/PanelState.js +192 -0
- package/dist/PanelState.js.map +1 -0
- package/dist/PhysicalOrientation.d.ts +58 -0
- package/dist/PhysicalOrientation.d.ts.map +1 -0
- package/dist/PhysicalOrientation.js +155 -0
- package/dist/PhysicalOrientation.js.map +1 -0
- package/dist/ScreenCaptureStreamer.d.ts +12 -1
- package/dist/ScreenCaptureStreamer.d.ts.map +1 -1
- package/dist/ScreenCaptureStreamer.js +28 -3
- package/dist/ScreenCaptureStreamer.js.map +1 -1
- package/dist/SimProcessTree.d.ts +3 -1
- package/dist/SimProcessTree.d.ts.map +1 -1
- package/dist/SimProcessTree.js +14 -4
- package/dist/SimProcessTree.js.map +1 -1
- package/dist/SimctlWrapper.d.ts +20 -2
- package/dist/SimctlWrapper.d.ts.map +1 -1
- package/dist/SimctlWrapper.js +53 -3
- package/dist/SimctlWrapper.js.map +1 -1
- package/dist/SimulatorNetwork.d.ts +3 -2
- package/dist/SimulatorNetwork.d.ts.map +1 -1
- package/dist/SimulatorNetwork.js +3 -2
- package/dist/SimulatorNetwork.js.map +1 -1
- package/dist/TouchHelper.d.ts +3 -2
- package/dist/TouchHelper.d.ts.map +1 -1
- package/dist/TouchHelper.js +4 -6
- package/dist/TouchHelper.js.map +1 -1
- package/dist/TypePanels.d.ts +33 -0
- package/dist/TypePanels.d.ts.map +1 -0
- package/dist/TypePanels.js +68 -0
- package/dist/TypePanels.js.map +1 -0
- package/dist/launchArgs.d.ts +6 -0
- package/dist/launchArgs.d.ts.map +1 -0
- package/dist/launchArgs.js +21 -0
- package/dist/launchArgs.js.map +1 -0
- package/dist/panels.d.ts +52 -0
- package/dist/panels.d.ts.map +1 -0
- package/dist/panels.js +68 -0
- package/dist/panels.js.map +1 -0
- package/dist/simctl.d.ts +3 -0
- package/dist/simctl.d.ts.map +1 -1
- package/dist/simctl.js +1 -1
- package/dist/simctl.js.map +1 -1
- package/package.json +6 -5
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TypePanels.js","sourceRoot":"","sources":["../src/TypePanels.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { LaunchOptions } from '@tapflowio/protocol';
|
|
2
|
+
/** The arguments as they follow the bundle id on `simctl launch`: `-key value` pairs, passed as argv with no shell. */
|
|
3
|
+
export declare function iosLaunchArgv(args: LaunchOptions['arguments']): string[];
|
|
4
|
+
/** The env as simctl takes it: each name prefixed with `SIMCTL_CHILD_`, which simctl strips before the app sees it. */
|
|
5
|
+
export declare function simctlChildEnv(env: LaunchOptions['env']): Record<string, string>;
|
|
6
|
+
//# sourceMappingURL=launchArgs.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"launchArgs.d.ts","sourceRoot":"","sources":["../src/launchArgs.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAuB,aAAa,EAAE,MAAM,qBAAqB,CAAA;AAgB7E,uHAAuH;AACvH,wBAAgB,aAAa,CAAC,IAAI,EAAE,aAAa,CAAC,WAAW,CAAC,GAAG,MAAM,EAAE,CAExE;AAED,uHAAuH;AACvH,wBAAgB,cAAc,CAAC,GAAG,EAAE,aAAa,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAEhF"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
// Every value goes out as an old-style plist string, because that is how the `UserDefaults` argument domain reads
|
|
2
|
+
// what follows a `-key`. Unquoted, a value starting with "-" is taken for the next key and one that is not valid plist
|
|
3
|
+
// text (a lone "(") is dropped: measured on iOS 26.5, `-offset -1` and `-paren (` both read back as nil, while
|
|
4
|
+
// `"-1"` and `"("` read back as the strings. Quoting also keeps "true" a string, which `bool(forKey:)` reads as true.
|
|
5
|
+
// A raw newline, tab, Korean or emoji inside the quotes reads back unchanged (measured the same way), so only the
|
|
6
|
+
// backslash and the quote are escaped.
|
|
7
|
+
function plistString(s) {
|
|
8
|
+
return `"${s.replace(/\\/g, '\\\\').replace(/"/g, '\\"')}"`;
|
|
9
|
+
}
|
|
10
|
+
function plistValue(v) {
|
|
11
|
+
return Array.isArray(v) ? `(${v.map(plistString).join(',')})` : plistString(String(v));
|
|
12
|
+
}
|
|
13
|
+
/** The arguments as they follow the bundle id on `simctl launch`: `-key value` pairs, passed as argv with no shell. */
|
|
14
|
+
export function iosLaunchArgv(args) {
|
|
15
|
+
return Object.entries(args ?? {}).flatMap(([k, v]) => [`-${k}`, plistValue(v)]);
|
|
16
|
+
}
|
|
17
|
+
/** The env as simctl takes it: each name prefixed with `SIMCTL_CHILD_`, which simctl strips before the app sees it. */
|
|
18
|
+
export function simctlChildEnv(env) {
|
|
19
|
+
return Object.fromEntries(Object.entries(env ?? {}).map(([k, v]) => [`SIMCTL_CHILD_${k}`, v]));
|
|
20
|
+
}
|
|
21
|
+
//# sourceMappingURL=launchArgs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"launchArgs.js","sourceRoot":"","sources":["../src/launchArgs.ts"],"names":[],"mappings":"AAEA,kHAAkH;AAClH,uHAAuH;AACvH,+GAA+G;AAC/G,sHAAsH;AACtH,kHAAkH;AAClH,uCAAuC;AACvC,SAAS,WAAW,CAAC,CAAS;IAC5B,OAAO,IAAI,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,GAAG,CAAA;AAC7D,CAAC;AAED,SAAS,UAAU,CAAC,CAAsB;IACxC,OAAO,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAA;AACxF,CAAC;AAED,uHAAuH;AACvH,MAAM,UAAU,aAAa,CAAC,IAAgC;IAC5D,OAAO,MAAM,CAAC,OAAO,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;AACjF,CAAC;AAED,uHAAuH;AACvH,MAAM,UAAU,cAAc,CAAC,GAAyB;IACtD,OAAO,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,gBAAgB,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAA;AAChG,CAAC"}
|
package/dist/panels.d.ts
ADDED
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
/** One integrated panel of a booted device, from `simctl io <udid> enumerate`'s Connected Screens. */
|
|
2
|
+
export interface IntegratedScreen {
|
|
3
|
+
/** The same number devicectl calls `displayId` (1 = the cover `primary` on the Duo, 3 = `primary-1`). */
|
|
4
|
+
screenId: number;
|
|
5
|
+
/** The display's Unique ID. **It changes on every boot**, so it is read per boot and never stored. */
|
|
6
|
+
uuid: string;
|
|
7
|
+
/** `primary`, `primary-1` — the stable name, from the device type's capabilities. */
|
|
8
|
+
deviceName: string;
|
|
9
|
+
/** The panel's framebuffer in pixels. The capture helper picks a panel by this (`--panel <w>x<h>`). */
|
|
10
|
+
width: number;
|
|
11
|
+
height: number;
|
|
12
|
+
/** Its points-per-pixel (`Preferred UI Scale`); 1 when the output does not say. */
|
|
13
|
+
scale: number;
|
|
14
|
+
/** DeviceKit's frame for this panel (`com.apple.dt.devicekit.chrome.phone15`), or null for `(none)`. On the
|
|
15
|
+
* Duo each panel has its own (cover `phone15`, unfolded `phone14`); the device type's model has one. */
|
|
16
|
+
chromeId: string | null;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* The integrated panels in `simctl io enumerate` output. Everything else it lists — TVOut, CarPlay, the
|
|
20
|
+
* Resizable scene — is not a panel of the device and is left out: sending touches for a screen nobody
|
|
21
|
+
* registered a digitizer for is how a guest's backboardd gets killed.
|
|
22
|
+
*/
|
|
23
|
+
export declare function parseIntegratedScreens(text: string): IntegratedScreen[];
|
|
24
|
+
/**
|
|
25
|
+
* How many integrated panels a device type has, from its `capabilities.plist` as JSON. Xcode 27 lists a
|
|
26
|
+
* device's displays there (the profile keys Xcode 26 used are gone — see `screenSizeFromDeviceType`);
|
|
27
|
+
* Xcode 26 has no `displays` at all, which reads as 1: every device type before the Duo had one panel.
|
|
28
|
+
*/
|
|
29
|
+
export declare function countIntegratedPanels(capabilities: unknown): number;
|
|
30
|
+
/** One integrated panel of a device type, from its `capabilities.plist` — known without booting the device. */
|
|
31
|
+
export interface TypePanel {
|
|
32
|
+
/** `primary`, `primary-1` — the same name `IntegratedScreen.deviceName` carries once the device is up. */
|
|
33
|
+
deviceName: string;
|
|
34
|
+
/** DeviceKit's frame for this panel, or null when the type names none. */
|
|
35
|
+
chromeId: string | null;
|
|
36
|
+
/** The framebuffer in pixels, and its points-per-pixel. */
|
|
37
|
+
width: number;
|
|
38
|
+
height: number;
|
|
39
|
+
scale: number;
|
|
40
|
+
/**
|
|
41
|
+
* How far the panel is drawn turned. A panel drawn natively turned has its framebuffer and its frame turned
|
|
42
|
+
* with it: the Duo's unfolded panel (`primary-1`) is 270, so a device held upright shows that panel turned
|
|
43
|
+
* 90 (measured). A panel with no stated quarter turn is 0, which is every panel before the Duo.
|
|
44
|
+
*/
|
|
45
|
+
nativeOrientation: 0 | 90 | 180 | 270;
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* The integrated panels of a device type, from its `capabilities.plist` as JSON. Empty on Xcode 26, whose
|
|
49
|
+
* plist lists no displays; a display missing its size is left out rather than guessed.
|
|
50
|
+
*/
|
|
51
|
+
export declare function typePanels(capabilities: unknown): TypePanel[];
|
|
52
|
+
//# sourceMappingURL=panels.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"panels.d.ts","sourceRoot":"","sources":["../src/panels.ts"],"names":[],"mappings":"AAGA,sGAAsG;AACtG,MAAM,WAAW,gBAAgB;IAC/B,yGAAyG;IACzG,QAAQ,EAAE,MAAM,CAAA;IAChB,sGAAsG;IACtG,IAAI,EAAE,MAAM,CAAA;IACZ,qFAAqF;IACrF,UAAU,EAAE,MAAM,CAAA;IAClB,uGAAuG;IACvG,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,MAAM,CAAA;IACd,mFAAmF;IACnF,KAAK,EAAE,MAAM,CAAA;IACb;6GACyG;IACzG,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAA;CACxB;AAED;;;;GAIG;AACH,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,MAAM,GAAG,gBAAgB,EAAE,CAoBvE;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,YAAY,EAAE,OAAO,GAAG,MAAM,CAKnE;AAED,+GAA+G;AAC/G,MAAM,WAAW,SAAS;IACxB,0GAA0G;IAC1G,UAAU,EAAE,MAAM,CAAA;IAClB,0EAA0E;IAC1E,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAA;IACvB,2DAA2D;IAC3D,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,MAAM,CAAA;IACd,KAAK,EAAE,MAAM,CAAA;IACb;;;;OAIG;IACH,iBAAiB,EAAE,CAAC,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,CAAA;CACtC;AAED;;;GAGG;AACH,wBAAgB,UAAU,CAAC,YAAY,EAAE,OAAO,GAAG,SAAS,EAAE,CAiB7D"}
|
package/dist/panels.js
ADDED
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
// What a simulator's integrated panels are — the facts a multi-panel device (iPhone Duo) needs that a
|
|
2
|
+
// single-panel one never asked for. Pure parsers; SimctlWrapper runs the commands.
|
|
3
|
+
/**
|
|
4
|
+
* The integrated panels in `simctl io enumerate` output. Everything else it lists — TVOut, CarPlay, the
|
|
5
|
+
* Resizable scene — is not a panel of the device and is left out: sending touches for a screen nobody
|
|
6
|
+
* registered a digitizer for is how a guest's backboardd gets killed.
|
|
7
|
+
*/
|
|
8
|
+
export function parseIntegratedScreens(text) {
|
|
9
|
+
const screens = [];
|
|
10
|
+
// Each connected screen is a block that opens with `(<id>) <Name>:` and lists `Key: value` lines.
|
|
11
|
+
for (const block of text.split(/\n(?=\s*\(\d+\)\s[^\n]*:\s*\n)/)) {
|
|
12
|
+
const field = (key) => block.match(new RegExp(`^\\s*${key}:\\s*(.+?)\\s*$`, 'm'))?.[1];
|
|
13
|
+
if (field('Screen Type') !== 'Integrated')
|
|
14
|
+
continue;
|
|
15
|
+
const screenId = Number(field('Screen ID'));
|
|
16
|
+
const uuid = field('Unique ID');
|
|
17
|
+
const deviceName = field('Device Name');
|
|
18
|
+
const size = field('Pixel Size')?.match(/^\{(\d+),\s*(\d+)\}$/);
|
|
19
|
+
if (!Number.isInteger(screenId) || !uuid || !deviceName || !size)
|
|
20
|
+
continue;
|
|
21
|
+
const chrome = field('Chrome ID');
|
|
22
|
+
const scale = Number(field('Preferred UI Scale'));
|
|
23
|
+
screens.push({
|
|
24
|
+
screenId, uuid, deviceName, width: Number(size[1]), height: Number(size[2]),
|
|
25
|
+
scale: Number.isFinite(scale) && scale > 0 ? scale : 1,
|
|
26
|
+
chromeId: chrome && chrome !== '(none)' ? chrome : null,
|
|
27
|
+
});
|
|
28
|
+
}
|
|
29
|
+
return screens.sort((a, b) => a.screenId - b.screenId);
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* How many integrated panels a device type has, from its `capabilities.plist` as JSON. Xcode 27 lists a
|
|
33
|
+
* device's displays there (the profile keys Xcode 26 used are gone — see `screenSizeFromDeviceType`);
|
|
34
|
+
* Xcode 26 has no `displays` at all, which reads as 1: every device type before the Duo had one panel.
|
|
35
|
+
*/
|
|
36
|
+
export function countIntegratedPanels(capabilities) {
|
|
37
|
+
const displays = capabilities?.capabilities?.displays;
|
|
38
|
+
if (!Array.isArray(displays))
|
|
39
|
+
return 1;
|
|
40
|
+
const n = displays.filter((d) => d?.displayType === 'integrated').length;
|
|
41
|
+
return Math.max(n, 1);
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* The integrated panels of a device type, from its `capabilities.plist` as JSON. Empty on Xcode 26, whose
|
|
45
|
+
* plist lists no displays; a display missing its size is left out rather than guessed.
|
|
46
|
+
*/
|
|
47
|
+
export function typePanels(capabilities) {
|
|
48
|
+
const displays = capabilities?.capabilities?.displays;
|
|
49
|
+
if (!Array.isArray(displays))
|
|
50
|
+
return [];
|
|
51
|
+
const panels = [];
|
|
52
|
+
for (const d of displays) {
|
|
53
|
+
if (d?.displayType !== 'integrated' || typeof d.deviceName !== 'string')
|
|
54
|
+
continue;
|
|
55
|
+
if (typeof d.width !== 'number' || typeof d.height !== 'number')
|
|
56
|
+
continue;
|
|
57
|
+
const turn = d.nativeOrientation;
|
|
58
|
+
panels.push({
|
|
59
|
+
deviceName: d.deviceName,
|
|
60
|
+
chromeId: typeof d.chromeIdentifier === 'string' ? d.chromeIdentifier : null,
|
|
61
|
+
width: d.width, height: d.height,
|
|
62
|
+
scale: typeof d.scale === 'number' && d.scale > 0 ? d.scale : 1,
|
|
63
|
+
nativeOrientation: turn === 90 || turn === 180 || turn === 270 ? turn : 0,
|
|
64
|
+
});
|
|
65
|
+
}
|
|
66
|
+
return panels;
|
|
67
|
+
}
|
|
68
|
+
//# sourceMappingURL=panels.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"panels.js","sourceRoot":"","sources":["../src/panels.ts"],"names":[],"mappings":"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"}
|
package/dist/simctl.d.ts
CHANGED
|
@@ -7,6 +7,9 @@ export interface SimctlExecOpts {
|
|
|
7
7
|
timeoutMs?: number;
|
|
8
8
|
/** Ceiling on stdout. Exceeding it rejects rather than buffering without bound. */
|
|
9
9
|
maxBuffer?: number;
|
|
10
|
+
/** Added to this process's environment for the call, never replacing it: dropping PATH or DEVELOPER_DIR would make
|
|
11
|
+
* `xcrun` pick a different Xcode. simctl forwards only `SIMCTL_CHILD_`-prefixed names to what it launches. */
|
|
12
|
+
env?: Record<string, string>;
|
|
10
13
|
}
|
|
11
14
|
/** Thrown when a call blows its `maxBuffer`. Distinguishable on purpose: for the clipboard, an
|
|
12
15
|
* over-sized read means the app DID copy and the text simply cannot be carried, whereas a
|
package/dist/simctl.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"simctl.d.ts","sourceRoot":"","sources":["../src/simctl.ts"],"names":[],"mappings":"AAwBA,wEAAwE;AACxE,MAAM,WAAW,cAAc;IAC7B,wFAAwF;IACxF,KAAK,CAAC,EAAE,MAAM,CAAA;IACd;kDAC8C;IAC9C,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,mFAAmF;IACnF,SAAS,CAAC,EAAE,MAAM,CAAA;
|
|
1
|
+
{"version":3,"file":"simctl.d.ts","sourceRoot":"","sources":["../src/simctl.ts"],"names":[],"mappings":"AAwBA,wEAAwE;AACxE,MAAM,WAAW,cAAc;IAC7B,wFAAwF;IACxF,KAAK,CAAC,EAAE,MAAM,CAAA;IACd;kDAC8C;IAC9C,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,mFAAmF;IACnF,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB;mHAC+G;IAC/G,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CAC7B;AAED;;2EAE2E;AAC3E,qBAAa,mBAAoB,SAAQ,KAAK;CAAG;AAEjD,MAAM,WAAW,YAAY;IAC3B,IAAI,CAAC,GAAG,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAAA;IACxC,UAAU,CAAC,GAAG,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAAA;IAC9C;uFACmF;IACnF,YAAY,CAAC,IAAI,EAAE,cAAc,EAAE,GAAG,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAAA;CACvE;AA+ED,eAAO,MAAM,aAAa,EAAE,YA6D3B,CAAA"}
|
package/dist/simctl.js
CHANGED
|
@@ -33,7 +33,7 @@ function coreSimServiceError() {
|
|
|
33
33
|
// than inherited, which is the price of `pbcopy` not being expressible as arguments.
|
|
34
34
|
function runWithOpts(opts, args) {
|
|
35
35
|
return new Promise((resolve, reject) => {
|
|
36
|
-
const proc = spawn('xcrun', ['simctl', ...args]);
|
|
36
|
+
const proc = spawn('xcrun', ['simctl', ...args], opts.env ? { env: { ...process.env, ...opts.env } } : {});
|
|
37
37
|
// Accumulate BYTES and decode once at the end. Decoding each chunk as it arrives splits
|
|
38
38
|
// multi-byte characters at pipe boundaries and turns them into U+FFFD — execFile avoided
|
|
39
39
|
// that by running stdout through a StringDecoder, and this path has to reproduce it.
|
package/dist/simctl.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"simctl.js","sourceRoot":"","sources":["../src/simctl.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,eAAe,CAAA;AAC/C,OAAO,EAAE,SAAS,EAAE,MAAM,MAAM,CAAA;AAChC,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAA;AAEpD,MAAM,MAAM,GAAG,YAAY,CAAC,kBAAkB,CAAC,CAAA;AAE/C,MAAM,aAAa,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAA;AAEzC,sFAAsF;AACtF,MAAM,gBAAgB,GAAG,EAAE,GAAG,IAAI,CAAA;AAElC,SAAS,8BAA8B,CAAC,GAAY;IAClD,MAAM,GAAG,GAAI,GAA6C,CAAC,MAAM;WAC3D,GAA4B,CAAC,OAAO,IAAI,EAAE,CAAA;IAChD,OAAO,GAAG,CAAC,QAAQ,CAAC,qCAAqC,CAAC;QACxD,GAAG,CAAC,QAAQ,CAAC,iBAAiB,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,yCAAyC,CAAC,CAAA;AAC9F,CAAC;AAED,KAAK,UAAU,2BAA2B;IACxC,sEAAsE;IACtE,MAAM,aAAa,CAAC,SAAS,EAAE,CAAC,IAAI,EAAE,8CAA8C,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAA;IACtG,MAAM,IAAI,OAAO,CAAO,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAA;AACrD,CAAC;
|
|
1
|
+
{"version":3,"file":"simctl.js","sourceRoot":"","sources":["../src/simctl.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@tapflowio/ios-agent",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.31.0",
|
|
4
4
|
"description": "iOS simulator agent for tapflow — xcrun simctl control and screen streaming",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"tapflow",
|
|
@@ -56,16 +56,16 @@
|
|
|
56
56
|
},
|
|
57
57
|
"dependencies": {
|
|
58
58
|
"ws": "^8.22.0",
|
|
59
|
-
"@tapflowio/agent-core": "0.
|
|
60
|
-
"@tapflowio/protocol": "0.
|
|
61
|
-
"@tapflowio/audiotap-helper": "0.3.
|
|
59
|
+
"@tapflowio/agent-core": "0.31.0",
|
|
60
|
+
"@tapflowio/protocol": "0.31.0",
|
|
61
|
+
"@tapflowio/audiotap-helper": "0.3.16"
|
|
62
62
|
},
|
|
63
63
|
"devDependencies": {
|
|
64
64
|
"@types/node": "^22.20.5",
|
|
65
65
|
"@types/ws": "^8.18.2",
|
|
66
66
|
"typescript": "^5.0.0",
|
|
67
67
|
"vitest": "^4.1.12",
|
|
68
|
-
"@tapflowio/relay": "0.
|
|
68
|
+
"@tapflowio/relay": "0.31.0",
|
|
69
69
|
"@tapflowio/test-utils": "0.0.0"
|
|
70
70
|
},
|
|
71
71
|
"scripts": {
|
|
@@ -75,6 +75,7 @@
|
|
|
75
75
|
"test": "vitest run",
|
|
76
76
|
"lint": "eslint src",
|
|
77
77
|
"build:nethook": "./build-nethook.sh",
|
|
78
|
+
"build:guest-helper": "./build-guest-helper.sh",
|
|
78
79
|
"test:netfilter": "./ios-netfilter/run-tests.sh"
|
|
79
80
|
}
|
|
80
81
|
}
|