@api-buddy/firebase
Version:
Firebase integration for API Buddy
3 lines • 4.66 kB
JavaScript
import { createRequire } from 'node:module'; const require = createRequire(import.meta.url);
;var I=Object.defineProperty;var A=Object.getOwnPropertyDescriptor;var F=Object.getOwnPropertyNames;var _=Object.prototype.hasOwnProperty;var x=(a,e)=>{for(var t in e)I(a,t,{get:e[t],enumerable:!0})},O=(a,e,t,s)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of F(e))!_.call(a,i)&&i!==t&&I(a,i,{get:()=>e[i],enumerable:!(s=A(e,i))||s.enumerable});return a};var U=a=>O(I({},"__esModule",{value:!0}),a);var M={};x(M,{FirestoreService:()=>g,auth:()=>Q,db:()=>m,firebaseApp:()=>h,isFirebaseInitialized:()=>W,storage:()=>P,useCollection:()=>q,useDocument:()=>w,useFirestoreService:()=>L,useRealtimeCollection:()=>N});module.exports=U(M);var y=require("firebase/app"),D=require("firebase/auth"),S=require("firebase/firestore"),b=require("firebase/storage"),v={apiKey:process.env.NEXT_PUBLIC_FIREBASE_API_KEY,authDomain:process.env.NEXT_PUBLIC_FIREBASE_AUTH_DOMAIN,projectId:process.env.NEXT_PUBLIC_FIREBASE_PROJECT_ID,storageBucket:process.env.NEXT_PUBLIC_FIREBASE_STORAGE_BUCKET,messagingSenderId:process.env.NEXT_PUBLIC_FIREBASE_MESSAGING_SENDER_ID,appId:process.env.NEXT_PUBLIC_FIREBASE_APP_ID,measurementId:process.env.NEXT_PUBLIC_FIREBASE_MEASUREMENT_ID},h;(0,y.getApps)().length?h=(0,y.getApp)():h=(0,y.initializeApp)(v);var Q=(0,D.getAuth)(h),m=(0,S.getFirestore)(h),P=(0,b.getStorage)(h);var W=()=>(0,y.getApps)().length>0;var r=require("firebase/firestore");var g=class{constructor(e,t=m){this.firestore=t;this.collectionRef=(0,r.collection)(this.firestore,e)}collectionRef;async create(e,t){let s=(0,r.doc)(this.collectionRef,e);return await(0,r.setDoc)(s,t),{id:e,...t}}async get(e){let t=(0,r.doc)(this.collectionRef,e),s=await(0,r.getDoc)(t);return s.exists()?{id:s.id,...s.data()}:null}async update(e,t){let s=(0,r.doc)(this.collectionRef,e);await(0,r.updateDoc)(s,t)}async delete(e){let t=(0,r.doc)(this.collectionRef,e);await(0,r.deleteDoc)(t)}async query(e={}){let t=this.collectionRef,s=[];if(e.where&&e.where.length>0)for(let o of e.where)s.push((0,r.where)(o.field,o.operator,o.value));if(e.orderBy&&e.orderBy.length>0)for(let o of e.orderBy)s.push((0,r.orderBy)(o.field,o.direction||"asc"));return e.limit&&(e.last?s.push((0,r.limitToLast)(e.limit)):s.push((0,r.limit)(e.limit))),e.startAfter&&s.push((0,r.startAfter)(e.startAfter)),e.endBefore&&s.push((0,r.endBefore)(e.endBefore)),s.length>0&&(t=(0,r.query)(this.collectionRef,...s)),(await(0,r.getDocs)(t)).docs.map(o=>({id:o.id,...o.data()}))}subscribe(e,t={}){let s=this.collectionRef,i=[];if(t.where&&t.where.length>0)for(let o of t.where)i.push((0,r.where)(o.field,o.operator,o.value));if(t.orderBy&&t.orderBy.length>0)for(let o of t.orderBy)i.push((0,r.orderBy)(o.field,o.direction||"asc"));return t.limit&&i.push((0,r.limit)(t.limit)),i.length>0&&(s=(0,r.query)(this.collectionRef,...i)),(0,r.onSnapshot)(s,o=>{let f=o.docs.map(l=>({id:l.id,...l.data()}));e(f)})}static createBatch(){return(0,r.writeBatch)(m)}static async runTransaction(e){return(0,r.runTransaction)(m,e)}};var n=require("react");function w(a,e){let[t,s]=(0,n.useState)(null),[i,o]=(0,n.useState)(!0),[f,l]=(0,n.useState)(null);return(0,n.useEffect)(()=>{e?(async()=>{try{o(!0);let c=await a.get(e);s(c)}catch(c){console.error("Error fetching document:",c),l(c)}finally{o(!1)}})():o(!1)},[a,e]),{data:t,loading:i,error:f}}function q(a,e={}){let[t,s]=(0,n.useState)([]),[i,o]=(0,n.useState)(!0),[f,l]=(0,n.useState)(null),[p,c]=(0,n.useState)(!0),u=(0,n.useRef)(null),R=async(E=!1)=>{if(!(!p&&!E||i))try{o(!0);let T={...e,...u.current&&!E&&{startAfter:u.current}},d=await a.query(T);s(C=>E?d:[...C,...d]),c(d.length===(e.limit||20)),d.length>0&&(u.current=d[d.length-1])}catch(T){console.error("Error fetching collection:",T),l(T)}finally{o(!1)}},B=()=>(u.current=null,R(!0));return(0,n.useEffect)(()=>{B()},[JSON.stringify(e)]),{data:t,loading:i,error:f,hasMore:p,fetchMore:()=>R(!1),refresh:B}}function N(a,e={}){let[t,s]=(0,n.useState)([]),[i,o]=(0,n.useState)(!0),[f,l]=(0,n.useState)(null),p=(0,n.useRef)(),c=(0,n.useRef)(!0);return(0,n.useEffect)(()=>{c.current=!0,o(!0);try{p.current=a.subscribe(u=>{c.current&&(s(u),o(!1))},e)}catch(u){console.error("Error setting up realtime subscription:",u),c.current&&(l(u),o(!1))}return()=>{c.current=!1,p.current&&p.current()}},[a,JSON.stringify(e)]),{data:t,loading:i,error:f}}function L(a){let e=(0,n.useRef)();return e.current||(e.current=new g(a)),e.current}0&&(module.exports={FirestoreService,auth,db,firebaseApp,isFirebaseInitialized,storage,useCollection,useDocument,useFirestoreService,useRealtimeCollection});
//# sourceMappingURL=index.js.map