/* * SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved. * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ export interface AppConfig { // Backend API Configuration backend: { baseUrl: string; port: number; apiVersion: 'v1' | 'v2'; }; // Runtime Configuration runtime: { dryRun: boolean; enableV2Api: boolean; }; // Frontend Configuration frontend: { port: number; host: string; }; } // Default configuration const defaultConfig: AppConfig = { backend: { baseUrl: process.env.NEXT_PUBLIC_BACKEND_BASE_URL || 'http://localhost', port: parseInt(process.env.NEXT_PUBLIC_BACKEND_PORT || '8000'), apiVersion: (process.env.NEXT_PUBLIC_API_VERSION as 'v1' | 'v2') || 'v2', }, runtime: { dryRun: process.env.NEXT_PUBLIC_DRY_RUN === 'true', enableV2Api: process.env.NEXT_PUBLIC_ENABLE_V2_API !== 'false', }, frontend: { port: parseInt(process.env.NEXT_PUBLIC_FRONTEND_PORT || '3000'), host: process.env.NEXT_PUBLIC_FRONTEND_HOST || 'localhost', }, }; // Helper function to get the full backend URL export const getBackendUrl = (config: AppConfig = defaultConfig): string => { return `${config.backend.baseUrl}:${config.backend.port}`; }; // Helper function to get the API endpoint export const getApiEndpoint = (config: AppConfig = defaultConfig): string => { const baseUrl = getBackendUrl(config); const endpoint = config.runtime.enableV2Api ? '/api/research2' : '/api/research'; return `${baseUrl}${endpoint}`; }; export default defaultConfig;