Refirebase is a simple library that allows you to use Firebase Realtime Database, Firestore, Storage and Authentication as a state management solution in your JavaScript application.
Use your favorite package manager to install Refirebase:
npm install refirebaseyarn add refirebasepnpm add refirebasebun add refirebaseImport the Refirebase class:
import { Refirebase } from 'refirebase';You can use the Refirebase class to get the Firebase objects:
const refirebase = new Refirebase({
apiKey: 'FIREBASE_API_KEY',
authDomain: 'FIREBASE_AUTH_DOMAIN',
databaseURL: 'FIREBASE_DATABASE_URL',
projectId: 'FIREBASE_PROJECT_ID',
storageBucket: 'FIREBASE_STORAGE_BUCKET',
messagingSenderId: 'FIREBASE_MESSAGING_SENDER_ID',
appId: 'FIREBASE_APP_ID',
measurementId: 'FIREBASE_MEASUREMENT_ID',
});Or you can use destructuring to get other objects:
const { db, auth } = new Refirebase({
apiKey: 'FIREBASE_API_KEY',
authDomain: 'FIREBASE_AUTH_DOMAIN',
databaseURL: 'FIREBASE_DATABASE_URL',
projectId: 'FIREBASE_PROJECT_ID',
storageBucket: 'FIREBASE_STORAGE_BUCKET',
messagingSenderId: 'FIREBASE_MESSAGING_SENDER_ID',
appId: 'FIREBASE_APP_ID',
measurementId: 'FIREBASE_MEASUREMENT_ID',
});If you prefer to use directly environment variables (from .env file), you can simply call the constructor without any parameters:
FIREBASE_API_KEY=
FIREBASE_AUTH_DOMAIN=
FIREBASE_DATABASE_URL=
FIREBASE_PROJECT_ID=
FIREBASE_STORAGE_BUCKET=
FIREBASE_MESSAGING_SENDER_ID=
FIREBASE_APP_ID=
FIREBASE_MEASUREMENT_ID=const refirebase = new Refirebase();// Import the Refirebase class
import { db } from '@/config/firebase';
// Get all data from the 'users' collection
const users = db.firestore.get("users");
// Get data with conditions
const users = db.firestore.get("users", {
where: {
name: "John",
},
});
// Get data with conditions and index
const users = db.firestore.get("users", {
where: {
name: "John",
lastName: { not: "Doe" },
},
});
// Get data with conditions and not
const users = db.firestore.get("users", {
where: {
name: "John",
age: { operator: ">=", value: 18 },
},
});Warning
For more information about the limitations of the Firestore query, see Firebase Firestore Query Limitations.
// Import the Refirebase class
import { db } from '@/config/firebase';
// Get ALL data from the 'users' collection
const users = db.realtime.get("users");// Import the Refirebase class
import { db } from '@/config/firebase';
// Get a file from the storage
const file = db.storage.get("path/to/file");// Import the Refirebase class
import { auth } from '@/config/firebase';
// Sign in with Google
const result = await auth.handleProviderSignIn("google");
if (!result) {
// Handle error
}
const user = result.user;This project is licensed under the MIT License - see the LICENSE file for details.