const VITE_API_SERVER_URL = import.meta.env.VITE_API_SERVER_URL || '' const VITE_LOAD_VIA_PROXY_URL = import.meta.env.VITE_LOAD_VIA_PROXY_URL === 'true' console.log(`API Server URL: ${VITE_API_SERVER_URL}`) class API { static async fetchIndex(): Promise { const response = await fetch(VITE_API_SERVER_URL + '/') if (!response.ok) throw new Error('Failed to fetch index.html') return response.text() } static async fetchStaticFile(path: string): Promise { const response = await fetch(`${VITE_API_SERVER_URL}/${path}`) if (!response.ok) throw new Error(`Failed to fetch ${path}`) return response.text() } // Rename the method to fetchExamplesByType static fetchExamplesByType(type: 'image' | 'audio' | 'video'): Promise { return fetch(`${VITE_API_SERVER_URL}/examples/${type}`).then((response) => { if (!response.ok) { throw new Error(`Failed to fetch examples of type ${type}`) } return response.json() }) } // Add a method to fetch a resource via the proxy endpoint to bypass CORS issues static getProxiedUrl(url: string, forceProxy = false): string { if (!VITE_LOAD_VIA_PROXY_URL && !forceProxy) { return url } return `${VITE_API_SERVER_URL}/proxy/${encodeURIComponent(url)}` } // Fetch dataset names from the backend, grouped by type static async fetchDatasets(): Promise<{ [type: string]: string[] }> { const response = await fetch(VITE_API_SERVER_URL + '/datasets') if (!response.ok) throw new Error('Failed to fetch datasets') return response.json() } // Fetch descriptions and model descriptions from the backend static async fetchDescriptions(): Promise<{ descriptions: any; model_descriptions: any }> { const response = await fetch(VITE_API_SERVER_URL + '/descriptions') if (!response.ok) throw new Error('Failed to fetch descriptions') return response.json() } } export default API