import { browser, dev } from "$app/environment"; import { env } from "$env/dynamic/public"; const LOCAL_ORIGIN = "http://localhost:5173"; const PRODUCTION_ORIGIN = "https://due.moe"; const normaliseOrigin = (origin: string) => origin.endsWith("/") ? origin.slice(0, -1) : origin; const isPrivateHostname = (hostname: string) => hostname === "localhost" || hostname === "127.0.0.1" || hostname.endsWith(".local") || /^10\./.test(hostname) || /^192\.168\./.test(hostname) || /^172\.(1[6-9]|2\d|3[0-1])\./.test(hostname); export const appOrigin = () => { if (browser) return window.location.origin; if (env.PUBLIC_APP_ORIGIN) return normaliseOrigin(env.PUBLIC_APP_ORIGIN); return dev ? LOCAL_ORIGIN : PRODUCTION_ORIGIN; }; export const siteUrl = (path = "/") => `${appOrigin()}${path.startsWith("/") ? path : `/${path}`}`; export const isLocalApp = () => { const { hostname } = new URL(appOrigin()); return dev || isPrivateHostname(hostname); }; export const appOriginHeaders = ( headers: Record = {}, ): Record => ({ ...headers, "Access-Control-Allow-Origin": appOrigin(), }); export { LOCAL_ORIGIN, PRODUCTION_ORIGIN };