interface ExecutorWindowConfig { readonly baseUrl?: string; readonly authPassword?: string;} declare global { interface Window { readonly executor?: ExecutorWindowConfig; }} const DEFAULT_BASE_URL = "http://127.0.0.1:4000"; const resolveInitialBaseUrl = (): string => { if (typeof window === "undefined") { return `${DEFAULT_BASE_URL}/api`; } const electronBaseUrl = window.executor?.baseUrl; if (electronBaseUrl) { // Electron sidecar exposes the localhost server origin (no /api suffix). // Append /api to match the on-disk routing layout. return electronBaseUrl.replace(/\/$/, "") + "/api"; } if (typeof window.location?.origin === "string") { return `${window.location.origin}/api`; } return `${DEFAULT_BASE_URL}/api`;}; let baseUrl = resolveInitialBaseUrl(); export const getBaseUrl = (): string => baseUrl; export const setBaseUrl = (url: string): void => { baseUrl = url;}; export const getAuthPassword = (): string | null => { if (typeof window === "undefined") return null; return window.executor?.authPassword ?? null;};
interface ExecutorWindowConfig {
readonly baseUrl?: string;
readonly authPassword?: string;
}
declare global {
interface Window {
readonly executor?: ExecutorWindowConfig;
}
}
const DEFAULT_BASE_URL = "http://127.0.0.1:4000";
const resolveInitialBaseUrl = (): string => {
if (typeof window === "undefined") {
return `${DEFAULT_BASE_URL}/api`;
}
const electronBaseUrl = window.executor?.baseUrl;
if (electronBaseUrl) {
// Electron sidecar exposes the localhost server origin (no /api suffix).
// Append /api to match the on-disk routing layout.
return electronBaseUrl.replace(/\/$/, "") + "/api";
}
if (typeof window.location?.origin === "string") {
return `${window.location.origin}/api`;
}
return `${DEFAULT_BASE_URL}/api`;
};
let baseUrl = resolveInitialBaseUrl();
export const getBaseUrl = (): string => baseUrl;
export const setBaseUrl = (url: string): void => {
baseUrl = url;
};
export const getAuthPassword = (): string | null => {
if (typeof window === "undefined") return null;
return window.executor?.authPassword ?? null;
};