import { env } from "$env/dynamic/private"; const cleanUrl = (value: string | undefined, fallback: string) => { const raw = value?.trim() || fallback; return raw.replace(/\/+$/, ""); }; export type WebConfig = { bobbinUrl: string; apiUrl: string; knotResolverUrl: string; camoUrl: string; }; export type PublicWebConfig = Pick< WebConfig, "bobbinUrl" | "apiUrl" | "knotResolverUrl" | "camoUrl" >; type WebConfigEnv = { BOBBIN_URL?: string; TANGLED_API_URL?: string; API_URL?: string; KNOT_RESOLVER_URL?: string; CAMO_URL?: string; }; export const resolveConfig = (values: WebConfigEnv): WebConfig => ({ bobbinUrl: cleanUrl(values.BOBBIN_URL, "http://127.0.0.1:8090"), apiUrl: cleanUrl(values.TANGLED_API_URL ?? values.API_URL, "http://127.0.0.1:8080"), knotResolverUrl: cleanUrl(values.KNOT_RESOLVER_URL, "https://knot1.tangled.sh"), camoUrl: cleanUrl(values.CAMO_URL, "https://camo.tangled.sh") }); export const getConfig = (): WebConfig => resolveConfig(env as WebConfigEnv); export const getPublicConfig = (): PublicWebConfig => getConfig();