| 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; |
| }; |
|
|