Skip to content

refirebase/refirebase

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

73 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Refirebase Logo

Refirebase

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.

Installation

Use your favorite package manager to install Refirebase:

NPM

npm install refirebase

Yarn, PNPM, BUN

yarn add refirebase
pnpm add refirebase
bun add refirebase

Usage

Import 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();

Examples

Databases

Firestore Database Example

// 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.

Realtime Database Example

// Import the Refirebase class
import { db } from '@/config/firebase';

// Get ALL data from the 'users' collection
const users = db.realtime.get("users");

Storage

// Import the Refirebase class
import { db } from '@/config/firebase';

// Get a file from the storage
const file = db.storage.get("path/to/file");

Features

Authentication Example

// 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;

License

This project is licensed under the MIT License - see the LICENSE file for details.