import firebase from 'firebase/app'; import { getStorage } from 'firebase/storage'; import { logger } from '@librechat/data-schemas'; import type { FirebaseStorage } from 'firebase/storage'; import type { FirebaseApp } from 'firebase/app'; let firebaseInitCount = 0; let firebaseApp: FirebaseApp | null = null; export const initializeFirebase = () => { if (firebaseApp) { return firebaseApp; } const firebaseConfig = { apiKey: process.env.FIREBASE_API_KEY, authDomain: process.env.FIREBASE_AUTH_DOMAIN, projectId: process.env.FIREBASE_PROJECT_ID, storageBucket: process.env.FIREBASE_STORAGE_BUCKET, messagingSenderId: process.env.FIREBASE_MESSAGING_SENDER_ID, appId: process.env.FIREBASE_APP_ID, }; if (Object.values(firebaseConfig).some((value) => !value)) { if (firebaseInitCount === 0) { logger.info( '[Optional] Firebase CDN not initialized. To enable, set FIREBASE_API_KEY, FIREBASE_AUTH_DOMAIN, FIREBASE_PROJECT_ID, FIREBASE_STORAGE_BUCKET, FIREBASE_MESSAGING_SENDER_ID, and FIREBASE_APP_ID environment variables.', ); } firebaseInitCount++; return null; } firebaseApp = firebase.initializeApp(firebaseConfig); logger.info('Firebase CDN initialized'); return firebaseApp; }; export const getFirebaseStorage = (): FirebaseStorage | null => { const app = initializeFirebase(); return app ? getStorage(app) : null; };