1// Firebase configuration and initialization 2// Safe to include more than once (ipBanBoot + page scripts + SPA navigation). 3(function () { 4 'use strict'; 5 6 if (window.__PUPWIFE_FIREBASE_CONFIG_LOADED__) { 7 if (typeof window.ensureFirebaseApp === 'function') { 8 window.ensureFirebaseApp(); 9 } 10 return; 11 } 12 window.__PUPWIFE_FIREBASE_CONFIG_LOADED__ = true; 13 14 function emitDevLog() { 15 if (typeof window !== 'undefined' && typeof window.devLog === 'function') { 16 window.devLog.apply(window, arguments); 17 } 18 } 19 function emitDevWarn() { 20 if (typeof window !== 'undefined' && typeof window.devWarn === 'function') { 21 window.devWarn.apply(window, arguments); 22 } 23 } 24 25 if (typeof window.__firebaseInitialized === 'undefined') { 26 window.__firebaseInitialized = false; 27 } 28 29 var firebaseConfig = { 30 apiKey: 'AIzaSyAgjuQRdBrtVnuWnmQN5DwL5T5J2CR_nL0', 31 authDomain: 'pongbreaker-c7868.firebaseapp.com', 32 databaseURL: 'https://pongbreaker-c7868-default-rtdb.firebaseio.com', 33 projectId: 'pongbreaker-c7868', 34 storageBucket: 'pongbreaker-c7868.firebasestorage.app', 35 messagingSenderId: '687604943939', 36 appId: '1:687604943939:web:0aba2d98afa03bd91298f6', 37 measurementId: 'G-XG7LB7STJP' 38 }; 39 40 function ensureFirebaseApp() { 41 if (typeof firebase === 'undefined') { 42 return false; 43 } 44 45 try { 46 firebase.app(); 47 window.__firebaseInitialized = true; 48 return true; 49 } catch (e) { 50 try { 51 firebase.initializeApp(firebaseConfig); 52 window.__firebaseInitialized = true; 53 try { 54 if (firebase.database && typeof firebase.database.enableLogging === 'function') { 55 firebase.database.enableLogging(false); 56 } 57 } catch (loggingErr) {} 58 try { 59 if (!sessionStorage.getItem('pupwife_firebase_devlogged')) { 60 emitDevLog('Firebase initialized successfully!'); 61 sessionStorage.setItem('pupwife_firebase_devlogged', '1'); 62 } 63 } catch (storageErr) { 64 emitDevLog('Firebase initialized successfully!'); 65 } 66 return true; 67 } catch (initErr) { 68 try { 69 firebase.app(); 70 window.__firebaseInitialized = true; 71 return true; 72 } catch (retryErr) { 73 emitDevWarn('Firebase config error:', initErr?.message || retryErr?.message); 74 return false; 75 } 76 } 77 } 78 } 79 80 window.ensureFirebaseApp = ensureFirebaseApp; 81 82 if (typeof firebase !== 'undefined') { 83 ensureFirebaseApp(); 84 } else { 85 emitDevWarn('Firebase scripts not loaded yet'); 86 } 87})();
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.