(
params: SelectorRuntimeParams,
options: { requireSession: boolean; capability: 'find' | 'get' | 'is' },
)
| 63 | } |
| 64 | |
| 65 | export async function createSelectorRuntime( |
| 66 | params: SelectorRuntimeParams, |
| 67 | options: { requireSession: boolean; capability: 'find' | 'get' | 'is' }, |
| 68 | ): Promise< |
| 69 | | { ok: true; runtime: ReturnType<typeof createSelectorRuntimeForDevice> } |
| 70 | | { ok: false; response: DaemonResponse } |
| 71 | > { |
| 72 | const session = params.sessionStore.get(params.sessionName); |
| 73 | if (!session && options.requireSession) { |
| 74 | return { |
| 75 | ok: false, |
| 76 | response: noActiveSessionError(), |
| 77 | }; |
| 78 | } |
| 79 | const device = session?.device ?? (await resolveTargetDevice(params.req.flags ?? {})); |
| 80 | if (!session) await ensureDeviceReady(device); |
| 81 | const unsupported = requireCommandSupported(options.capability, device); |
| 82 | if (unsupported) return { ok: false, response: unsupported }; |
| 83 | return { |
| 84 | ok: true, |
| 85 | runtime: createSelectorRuntimeForDevice({ |
| 86 | ...params, |
| 87 | session, |
| 88 | device, |
| 89 | }), |
| 90 | }; |
| 91 | } |
| 92 | |
| 93 | function createSelectorBackend(params: SelectorRuntimeDeviceParams): AgentDeviceBackend { |
| 94 | const { req, session, device, logPath, sessionName, sessionStore } = params; |
no test coverage detected