(
params: SelectorRuntimeParams & {
session: SessionState | undefined;
device: SessionState['device'];
selectorExpression: string;
timeoutMs: number | null;
},
)
| 301 | } |
| 302 | |
| 303 | async function dispatchDirectIosSelectorWait( |
| 304 | params: SelectorRuntimeParams & { |
| 305 | session: SessionState | undefined; |
| 306 | device: SessionState['device']; |
| 307 | selectorExpression: string; |
| 308 | timeoutMs: number | null; |
| 309 | }, |
| 310 | ): Promise<DaemonResponse | null> { |
| 311 | const selector = readSimpleIosSelectorTarget({ |
| 312 | session: params.session, |
| 313 | selectorExpression: params.selectorExpression, |
| 314 | }); |
| 315 | if (!params.session || !selector) return null; |
| 316 | const startedAt = Date.now(); |
| 317 | const result = await queryDirectIosSelectorOrFallback(params, params.session, selector); |
| 318 | if (isDirectIosSelectorErrorResult(result)) return result.response; |
| 319 | if (!result?.found) return null; |
| 320 | const payload = { |
| 321 | kind: 'selector', |
| 322 | selector: selector.raw, |
| 323 | waitedMs: Date.now() - startedAt, |
| 324 | selectorChain: [selector.raw], |
| 325 | }; |
| 326 | recordIfSession(params.sessionStore, params.sessionName, params.req, payload); |
| 327 | const response: DaemonResponse = { ok: true, data: payload }; |
| 328 | return await maybeWaitTimeoutSurfaceResponse( |
| 329 | { req: params.req, logPath: params.logPath, session: params.session, device: params.device }, |
| 330 | response, |
| 331 | ); |
| 332 | } |
| 333 | |
| 334 | async function resolveDirectIosSelectorQuery( |
| 335 | params: SelectorRuntimeParams, |
no test coverage detected