/** * Wrapper around fetch that prepends the Next.js basePath so API calls * reach the correct backend when deployed under a sub-path (/ppt-tool). * * Must match basePath in next.config.mjs. * Usage: apiFetch('/api/v1/...', options) — identical to fetch(), just works. */ const BASE_PATH = '/ppt-tool'; const PREFIXED_PATHS = ['/api/', '/app_data/', '/static/']; function needsBasePath(path: string): boolean { return PREFIXED_PATHS.some((p) => path.startsWith(p)); } export function apiFetch(path: string, init?: RequestInit): Promise { const url = needsBasePath(path) ? `${BASE_PATH}${path}` : path; return fetch(url, init); } /** Returns the full URL with basePath — use for EventSource and other non-fetch calls. */ export function apiUrl(path: string): string { return needsBasePath(path) ? `${BASE_PATH}${path}` : path; }