@@ -30,61 +30,6 @@ interface LockdownServiceInfo {
3030 device : Device ;
3131}
3232
33- /**
34- * Simple interactive UDID selector using arrow keys, defaults if only one device
35- */
36- const promptUserToSelectUDID = async ( devices : Device [ ] ) : Promise < string > => {
37- if ( devices . length === 1 ) {
38- const single = devices [ 0 ] . Properties . SerialNumber ;
39- log . info ( `Only one device found, selecting UDID: ${ single } ` ) ;
40- return single ;
41- }
42-
43- return await new Promise < string > ( ( resolve ) => {
44- let selected = 0 ;
45- const render = ( ) => {
46- // eslint-disable-next-line no-console
47- console . clear ( ) ;
48- log . info ( 'Select a device UDID:' ) ;
49- devices . forEach ( ( d , i ) => {
50- const prefix = i === selected ? '>' : ' ' ;
51- log . info (
52- `${ prefix } ${ d . Properties . SerialNumber } - ${ d . Properties . ConnectionType } ` ,
53- ) ;
54- } ) ;
55- } ;
56-
57- process . stdin . setRawMode ( true ) ;
58- process . stdin . resume ( ) ;
59- process . stdin . setEncoding ( 'utf8' ) ;
60-
61- const onKey = ( key : string ) => {
62- if ( key === '\u0003' ) {
63- log . info ( 'User canceled selection (Ctrl+C)' ) ;
64- process . exit ( ) ;
65- } else if ( key === '\u001B[A' ) {
66- selected = ( selected - 1 + devices . length ) % devices . length ;
67- render ( ) ;
68- } else if ( key === '\u001B[B' ) {
69- selected = ( selected + 1 ) % devices . length ;
70- render ( ) ;
71- } else if ( key === '\r' ) {
72- process . stdin . setRawMode ( false ) ;
73- process . stdin . pause ( ) ;
74- process . stdin . removeListener ( 'data' , onKey ) ;
75- const udid = devices [ selected ] . Properties . SerialNumber ;
76- // eslint-disable-next-line no-console
77- console . clear ( ) ;
78- log . info ( `Selected UDID: ${ udid } ` ) ;
79- resolve ( udid ) ;
80- }
81- } ;
82-
83- render ( ) ;
84- process . stdin . on ( 'data' , onKey ) ;
85- } ) ;
86- } ;
87-
8833/**
8934 * Upgrades a socket to TLS
9035 */
@@ -240,10 +185,10 @@ export class LockdownService extends BasePlistService {
240185}
241186
242187/**
243- * Creates a LockdownService, optionally prompting for UDID
188+ * Creates a LockdownService using the provided UDID
244189 */
245190export async function createLockdownServiceByUDID (
246- udid ? : string ,
191+ udid : string ,
247192 port = 62078 ,
248193 autoSecure = true ,
249194) : Promise < LockdownServiceInfo > {
@@ -261,16 +206,13 @@ export async function createLockdownServiceByUDID(
261206 throw new Error ( 'No devices connected' ) ;
262207 }
263208
264- // Determine UDID: use provided if valid, otherwise prompt
265- let selectedUDID : string ;
266- if ( udid && devices . some ( ( d ) => d . Properties . SerialNumber === udid ) ) {
267- log . info ( `Using provided UDID: ${ udid } ` ) ;
268- selectedUDID = udid ;
269- } else {
270- selectedUDID = await promptUserToSelectUDID ( devices ) ;
209+ // Verify the provided UDID exists in connected devices
210+ if ( ! devices . some ( ( d ) => d . Properties . SerialNumber === udid ) ) {
211+ throw new Error ( `Provided UDID ${ udid } not found among connected devices` ) ;
271212 }
272213
273- log . info ( 'Selected UDID:' , selectedUDID ) ;
214+ const selectedUDID = udid ;
215+ log . info ( 'Using UDID:' , selectedUDID ) ;
274216
275217 const device = devices . find (
276218 ( d ) => d . Properties . SerialNumber === selectedUDID ,
0 commit comments