Skip to content

Crewdle/firebase-service

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

@crewdle/firebase-service

A TypeScript Firebase service wrapper that provides a simplified interface for Firebase Authentication, Firestore, and Cloud Functions.

Features

  • 🔥 Firebase Authentication: Custom token sign-in, user management
  • 📦 Firestore: Document operations with intelligent path handling
  • Cloud Functions: Call Firebase Functions with ease
  • 🎯 TypeScript: Full type safety and IntelliSense support
  • 🔧 Flexible: Works with any Firebase project configuration

Installation

npm install @crewdle/firebase-service

Note: Firebase is a peer dependency, so you need to install it separately:

npm install firebase

Quick Start

Angular Usage (Recommended)

1. Install the package:

npm install @crewdle/firebase-service firebase

2. Configure in your app module:

import { NgModule } from '@angular/core';
import { FirebaseServiceModule } from '@crewdle/firebase-service';
import { environment } from '../environments/environment';

@NgModule({
  imports: [
    FirebaseServiceModule.forRoot({
      firebaseConfig: environment.firebaseConfig,
      functionsRegion: 'us-central1' // optional
    })
  ]
})
export class AppModule { }

Alternative: Using providers directly (for standalone apps):

import { bootstrapApplication } from '@angular/platform-browser';
import { FirebaseService, FIREBASE_SERVICE_CONFIG } from '@crewdle/firebase-service';
import { environment } from './environments/environment';

bootstrapApplication(AppComponent, {
  providers: [
    {
      provide: FIREBASE_SERVICE_CONFIG,
      useValue: {
        firebaseConfig: environment.firebaseConfig,
        functionsRegion: 'us-central1'
      }
    },
    FirebaseService
  ]
});

3. Inject and use in your components/services:

import { Component, inject } from '@angular/core';
import { FirebaseService } from '@crewdle/firebase-service';

@Component({
  selector: 'app-example',
  template: '...'
})
export class ExampleComponent {
  private readonly firebaseService = inject(FirebaseService);

  async loadData() {
    const doc = await this.firebaseService.getDocument('users/123');
    console.log(doc.data);
  }
}

Non-Angular Usage

import { FirebaseService } from '@crewdle/firebase-service';

const firebaseService = FirebaseService.create({
  firebaseConfig: {
    apiKey: "your-api-key",
    authDomain: "your-project.firebaseapp.com",
    projectId: "your-project-id",
    // ... other config
  },
  functionsRegion: "us-central1" // optional, defaults to us-central1
});

API Reference

Authentication

// Sign in with custom token
const user = await firebaseService.signInWithCustomToken(customToken);

// Get current user
const currentUser = firebaseService.getCurrentUser();

// Sign out
await firebaseService.signOut();

Firestore Operations

// Add document with auto-generated ID
const result = await firebaseService.addDocument('users', {
  name: 'John Doe',
  email: '[email protected]'
});
console.log('Document ID:', result.id);

// Add document with specific ID
await firebaseService.addDocument('users/user123', {
  name: 'Jane Doe',
  email: '[email protected]'
});

// Get document
const doc = await firebaseService.getDocument('users/user123');
if (doc.exists) {
  console.log('User data:', doc.data);
}

Cloud Functions

// Call a function
const result = await firebaseService.callFunction('myFunction', {
  param1: 'value1',
  param2: 'value2'
});

// Call a function with streaming response
const stream = firebaseService.callFunctionStream('streamingFunction', data);

Access Firebase Instances

// Get underlying Firebase instances if needed
const app = firebaseService.getApp();
const auth = firebaseService.getAuth();
const firestore = firebaseService.getFirestore();
const functions = firebaseService.getFunctions();

Advanced Usage

Custom Configuration

const firebaseService = new FirebaseService({
  firebaseConfig: {
    // Your Firebase config
  },
  functionsRegion: "europe-west1" // Use European region
});

Error Handling

try {
  const doc = await firebaseService.getDocument('nonexistent/doc');
} catch (error) {
  console.error('Failed to get document:', error);
}

TypeScript Support

The package includes full TypeScript definitions:

import { 
  FirebaseService, 
  FirebaseServiceConfig, 
  FirestoreDocument,
  DocumentResult 
} from '@crewdle/firebase-service';

License

MIT © Crewdle

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published