// firebase.js — Firebase Admin SDK Init (HF Spaces compatible) const admin = require("firebase-admin"); require("dotenv").config(); let db = null; function initFirebase() { if (admin.apps.length > 0) return admin.app(); // HF Spaces kadang escape \\n jadi \n — normalize dulu const rawKey = process.env.FIREBASE_PRIVATE_KEY || ""; const privateKey = rawKey.includes("\\n") ? rawKey.replace(/\\n/g, "\n") : rawKey; if (!process.env.FIREBASE_PROJECT_ID) { console.error("⚠️ FIREBASE_PROJECT_ID tidak ditemukan! Set di HF Spaces Secrets."); return null; } const serviceAccount = { type: "service_account", project_id: process.env.FIREBASE_PROJECT_ID, private_key_id: process.env.FIREBASE_PRIVATE_KEY_ID, private_key: privateKey, client_email: process.env.FIREBASE_CLIENT_EMAIL, client_id: process.env.FIREBASE_CLIENT_ID, auth_uri: "https://accounts.google.com/o/oauth2/auth", token_uri: "https://oauth2.googleapis.com/token", }; admin.initializeApp({ credential: admin.credential.cert(serviceAccount), databaseURL: process.env.FIREBASE_DATABASE_URL, }); console.log("✅ Firebase initialized — project:", process.env.FIREBASE_PROJECT_ID); return admin.app(); } function getDB() { if (!db) { initFirebase(); db = admin.firestore(); db.settings({ ignoreUndefinedProperties: true }); } return db; } module.exports = { initFirebase, getDB, admin };