@hyper-fetch/firebase-admin
v8.2.0
Published
First class Firebase Admin adapter for Hyper Fetch
Readme
🔥 Hyper Fetch Firebase Admin
📖 About
This adapter brings HyperFetch to server-side Firebase. Share request patterns between browser and Node.js, use the same typed API for Firestore and Realtime Database, and leverage HyperFetch's queuing and retry capabilities on top of the Firebase Admin SDK.
🎯 Key Capabilities
- 🔮 Same code, server-side — Identical HyperFetch patterns for server and client Firebase operations
- 🔥 Firestore & Realtime Database — Both engines through one typed adapter
- 🔁 Server-side retry and queuing — Automatic retries with backoff for flaky Firebase calls in backend services
- ✨ Full TypeScript types — Parameters, payloads, and responses typed for every database operation
🚀 Quick Start
npm install @hyper-fetch/core @hyper-fetch/firebase-admin firebase-adminimport { createClient } from "@hyper-fetch/core";
import { FirebaseAdminAdapter } from "@hyper-fetch/firebase-admin";
import { getFirestore } from "firebase-admin/firestore";
const db = getFirestore();
const client = createClient({ url: "" }).setAdapter(FirebaseAdminAdapter(db));📚 Documentation
💡 Examples
Server-side CRUD
interface Message {
text: string;
author: string;
createdAt: number;
}
const addMessage = client.createRequest<{ payload: Message; response: null }>()({
endpoint: "/messages",
method: "addDoc",
});
const getMessages = client.createRequest<{ response: Message[] }>()({
endpoint: "/messages",
method: "getDocs",
});
await addMessage.send({
data: { text: "Hello from server!", author: "system", createdAt: Date.now() },
});
const { data: messages } = await getMessages.send();
messages.forEach((msg) => console.log(`${msg.author}: ${msg.text}`));Update and delete
const updateMessage = client.createRequest<{ payload: Partial<Message>; response: null }>()({
endpoint: "/messages/:messageId",
method: "updateDoc",
});
const deleteMessage = client.createRequest<{ response: null }>()({
endpoint: "/messages/:messageId",
method: "deleteDoc",
});
await updateMessage.setParams({ messageId: "abc" }).send({ data: { text: "Updated!" } });
await deleteMessage.setParams({ messageId: "abc" }).send();