mirror of
https://github.com/mountain-loop/yaak.git
synced 2026-08-15 16:12:05 +02:00
32 lines
1.3 KiB
TypeScript
32 lines
1.3 KiB
TypeScript
import { createBridgePlatform } from "./bridge";
|
|
import { bridgeConfig, promptForToken, shouldUseBridge } from "./connect";
|
|
import { setPlatform } from "./registry";
|
|
import { createTauriPlatform } from "./tauri";
|
|
|
|
// This line is the swap point, and it has to run synchronously: several modules
|
|
// call commands while the module graph is still evaluating, so there is no
|
|
// later moment to install a host in.
|
|
//
|
|
// Both hosts are constructible without waiting for anything. The bridge host
|
|
// opens its connection in the background and queues calls made before it lands,
|
|
// which is why picking a host here does not mean blocking on one.
|
|
if (shouldUseBridge()) {
|
|
const config = bridgeConfig();
|
|
if (config == null) {
|
|
// No token yet: put the connect form on screen and install a host that
|
|
// never connects. Boot then stalls at its own top-level await rather than
|
|
// failing somewhere that doesn't explain itself — and it stalls in the one
|
|
// place already designed to wait, which keeps this file synchronous.
|
|
promptForToken();
|
|
setPlatform(createBridgePlatform(window.location.origin, null));
|
|
} else {
|
|
setPlatform(createBridgePlatform(config.url, config.token));
|
|
}
|
|
} else {
|
|
setPlatform(createTauriPlatform());
|
|
}
|
|
|
|
export * from "./capabilities";
|
|
export { platform, setPlatform } from "./registry";
|
|
export * from "./types";
|