This repository has no description
1import { env } from '$env/dynamic/private';
2
3const cleanUrl = (value: string | undefined, fallback: string) => {
4 const raw = value?.trim() || fallback;
5 return raw.replace(/\/+$/, '');
6};
7
8export type WebConfig = {
9 bobbinUrl: string;
10 apiUrl: string;
11 knotResolverUrl: string;
12 camoUrl: string;
13};
14
15export type PublicWebConfig = Pick<
16 WebConfig,
17 'bobbinUrl' | 'apiUrl' | 'knotResolverUrl' | 'camoUrl'
18>;
19
20type WebConfigEnv = {
21 BOBBIN_URL?: string;
22 TANGLED_API_URL?: string;
23 API_URL?: string;
24 KNOT_RESOLVER_URL?: string;
25 CAMO_URL?: string;
26};
27
28export const resolveConfig = (values: WebConfigEnv): WebConfig => ({
29 bobbinUrl: cleanUrl(values.BOBBIN_URL, 'http://127.0.0.1:8090'),
30 apiUrl: cleanUrl(values.TANGLED_API_URL ?? values.API_URL, 'http://127.0.0.1:8080'),
31 knotResolverUrl: cleanUrl(values.KNOT_RESOLVER_URL, 'https://knot1.tangled.sh'),
32 camoUrl: cleanUrl(values.CAMO_URL, 'https://camo.tangled.sh')
33});
34
35export const getConfig = (): WebConfig => resolveConfig(env as WebConfigEnv);
36
37export const getPublicConfig = (): PublicWebConfig => getConfig();