19 lines
829 B
TypeScript
19 lines
829 B
TypeScript
/** Mobile routing is explicit and cannot start a first-run installer. */
|
|
export function createMobileBackendResolver<Connection extends { mode: string; baseUrl: string; token: string }>({
|
|
isRemote,
|
|
runtimeNeedsInstall,
|
|
ensureBackend
|
|
}: {
|
|
isRemote: (profile: string) => boolean
|
|
runtimeNeedsInstall: (profile: string) => boolean
|
|
ensureBackend: (profile: string) => Promise<Connection>
|
|
}) {
|
|
return async (profile: string) => {
|
|
if (isRemote(profile)) throw new Error('aiturk-mobile:remote_mode')
|
|
if (runtimeNeedsInstall(profile)) throw new Error('aiturk-mobile:runtime_not_ready')
|
|
const connection = await ensureBackend(profile)
|
|
if (connection.mode !== 'local' || isRemote(profile)) throw new Error('aiturk-mobile:remote_mode')
|
|
return { baseUrl: connection.baseUrl, token: connection.token }
|
|
}
|
|
}
|