in src/lib/server/providers/index.ts [184:224]
export async function fetchAllProviderData(apiKeys: ApiKeys): Promise<MaxTokensCache> {
serverLog("Fetching data for all providers...");
const results: MaxTokensCache = {};
// Define fetchers, passing the specific key from the apiKeys object
const providerFetchers = [
{ name: "cohere", fetcher: () => fetchCohereData(apiKeys.COHERE_API_KEY) },
{ name: "together", fetcher: () => fetchTogetherData(apiKeys.TOGETHER_API_KEY) },
{ name: "fireworks-ai", fetcher: () => fetchFireworksData(apiKeys.FIREWORKS_API_KEY) },
{ name: "hyperbolic", fetcher: () => fetchHyperbolicData(apiKeys.HYPERBOLIC_API_KEY) },
{ name: "replicate", fetcher: () => fetchReplicateData(apiKeys.REPLICATE_API_KEY) },
{ name: "nebius", fetcher: () => fetchNebiusData(apiKeys.NEBIUS_API_KEY) },
{ name: "novita", fetcher: () => fetchNovitaData(apiKeys.NOVITA_API_KEY) },
{ name: "sambanova", fetcher: () => fetchSambanovaData(apiKeys.SAMBANOVA_API_KEY) },
];
const settledResults = await Promise.allSettled(providerFetchers.map(p => p.fetcher()));
settledResults.forEach((result, index) => {
const providerInfo = providerFetchers[index];
if (!providerInfo) {
serverError(`Error: No provider info found for index ${index}`);
return;
}
const providerName = providerInfo.name;
if (result.status === "fulfilled" && result.value) {
if (Object.keys(result.value).length > 0) {
results[providerName] = result.value;
serverLog(`Successfully fetched data for ${providerName}`);
} else {
serverLog(`No data returned for ${providerName}.`);
}
} else if (result.status === "rejected") {
serverError(`Error fetching ${providerName} data:`, result.reason);
}
});
serverLog("Finished fetching provider data.");
return results;
}