CtrlK
BlogDocsLog inGet started
Tessl Logo

tessl/npm-firebase

Firebase JavaScript library for web and Node.js applications providing authentication, databases, storage, analytics, messaging, and other backend services

Pending
Quality

Pending

Does it follow best practices?

Impact

Pending

No eval scenarios have been run

SecuritybySnyk

Pending

The risk profile of this skill

Overview
Eval results
Files

app.mddocs/

Firebase App Management

Core Firebase app initialization and management functionality. Every Firebase service requires an initialized app instance.

Capabilities

App Initialization

Initialize a Firebase app with configuration options.

/**
 * Creates and initializes a Firebase app instance
 * @param options - Firebase configuration object
 * @param name - Optional app name for multiple apps
 * @returns Initialized Firebase app instance
 */
function initializeApp(options: FirebaseOptions, name?: string | FirebaseAppSettings): FirebaseApp;

/**
 * Initialize a Firebase app for server-side use
 * @param options - Firebase configuration or existing app
 * @param config - Server-specific configuration
 * @returns Server Firebase app instance
 */
function initializeServerApp(options: FirebaseOptions | FirebaseApp, config?: FirebaseServerAppSettings): FirebaseServerApp;

interface FirebaseOptions {
  /** Firebase API key */
  apiKey?: string;
  /** Authentication domain */
  authDomain?: string;
  /** Realtime Database URL */
  databaseURL?: string;
  /** Cloud Firestore project ID */
  projectId?: string;
  /** Storage bucket URL */
  storageBucket?: string;
  /** Cloud Messaging sender ID */
  messagingSenderId?: string;
  /** Firebase app ID */
  appId?: string;
  /** Analytics measurement ID */
  measurementId?: string;
}

interface FirebaseAppSettings {
  name?: string;
  automaticDataCollectionEnabled?: boolean;
}

interface FirebaseServerAppSettings {
  authIdToken?: string;
  appCheckToken?: string;
  releaseOnDeref?: boolean;
}

interface FirebaseApp {
  /** App name identifier */
  readonly name: string;
  /** App configuration options */
  readonly options: FirebaseOptions;
  /** Whether automatic data collection is enabled */
  automaticDataCollectionEnabled: boolean;
}

interface FirebaseServerApp extends FirebaseApp {
  /** Server-specific properties */
  readonly settings: FirebaseServerAppSettings;
}

Usage Examples:

import { initializeApp } from 'firebase/app';

// Basic initialization
const firebaseConfig = {
  apiKey: "AIzaSyC...",
  authDomain: "my-project.firebaseapp.com",
  projectId: "my-project",
  storageBucket: "my-project.appspot.com",
  messagingSenderId: "123456789",
  appId: "1:123456789:web:abcdef"
};

const app = initializeApp(firebaseConfig);

// Named app for multiple projects
const secondaryApp = initializeApp(firebaseConfig, "secondary");

// Server-side initialization
import { initializeServerApp } from 'firebase/app';

const serverApp = initializeServerApp(firebaseConfig, {
  authIdToken: 'user-auth-token',
  releaseOnDeref: true
});

App Management

Retrieve and manage existing Firebase app instances.

/**
 * Retrieves an existing Firebase app instance
 * @param name - Optional app name, defaults to '[DEFAULT]'
 * @returns Firebase app instance
 * @throws FirebaseError if app doesn't exist
 */
function getApp(name?: string): FirebaseApp;

/**
 * Returns array of all initialized Firebase apps
 * @returns Array of all Firebase app instances
 */
function getApps(): FirebaseApp[];

/**
 * Deletes a Firebase app and frees associated resources
 * @param app - Firebase app instance to delete
 * @returns Promise that resolves when deletion is complete
 */
function deleteApp(app: FirebaseApp): Promise<void>;

Usage Examples:

import { getApp, getApps, deleteApp } from 'firebase/app';

// Get default app
const app = getApp();

// Get named app
const secondaryApp = getApp('secondary');

// List all apps
const allApps = getApps();
console.log(`${allApps.length} Firebase apps initialized`);

// Clean up app when done
await deleteApp(secondaryApp);

Logging and Version Management

Configure logging and register library versions.

/**
 * Registers a library version for telemetry and debugging
 * @param libraryKeyOrName - Library identifier
 * @param version - Library version string
 * @param variant - Optional variant identifier
 */
function registerVersion(libraryKeyOrName: string, version: string, variant?: string): void;

/**
 * Sets a custom log handler for Firebase SDK logs
 * @param logCallback - Function to handle log messages, null to reset
 * @param options - Optional logging configuration
 */
function onLog(logCallback: LogCallback | null, options?: LogOptions): void;

/**
 * Sets the log level for all Firebase SDKs
 * @param logLevel - Minimum log level to output
 */
function setLogLevel(logLevel: LogLevelString): void;

type LogCallback = (callbackParams: LogCallbackParams) => void;
type LogLevelString = 'debug' | 'verbose' | 'info' | 'warn' | 'error' | 'silent';

interface LogCallbackParams {
  level: LogLevelString;
  message: string;
  args: any[];
  type: string;
}

interface LogOptions {
  level?: LogLevelString;
}

Usage Examples:

import { registerVersion, onLog, setLogLevel } from 'firebase/app';

// Register custom library version
registerVersion('my-firebase-wrapper', '2.1.0', 'react');

// Set up custom logging
onLog((params) => {
  console.log(`[${params.level}] ${params.message}`, ...params.args);
}, { level: 'debug' });

// Set global log level
setLogLevel('warn'); // Only show warnings and errors

Constants

/** Current Firebase SDK version */
const SDK_VERSION: string;

Error Types

class FirebaseError extends Error {
  /** Error code identifying the specific error */
  readonly code: string;
  /** Human-readable error message */
  readonly message: string;
  /** Error name, typically 'FirebaseError' */
  readonly name: string;
  /** Optional additional error details */
  readonly customData?: Record<string, unknown>;
}

Multi-App Usage Pattern

Firebase supports multiple app instances for complex applications:

import { initializeApp, getApp } from 'firebase/app';
import { getAuth } from 'firebase/auth';
import { getFirestore } from 'firebase/firestore';

// Primary app
const primaryApp = initializeApp(primaryConfig);
const primaryAuth = getAuth(primaryApp);
const primaryDb = getFirestore(primaryApp);

// Secondary app for different project
const secondaryApp = initializeApp(secondaryConfig, 'secondary');
const secondaryAuth = getAuth(secondaryApp);
const secondaryDb = getFirestore(secondaryApp);

// Access apps later
const primary = getApp(); // Default app
const secondary = getApp('secondary'); // Named app

Environment Detection

Firebase automatically detects the runtime environment and configures itself appropriately for:

  • Web browsers
  • Node.js servers
  • React Native applications
  • Web extensions
  • Cordova/PhoneGap applications

No additional configuration is typically required for environment-specific behavior.

docs

ai.md

analytics.md

app-check.md

app.md

auth-cordova.md

auth-web-extension.md

auth.md

data-connect.md

database.md

firestore-lite.md

firestore.md

functions.md

index.md

installations.md

messaging-sw.md

messaging.md

performance.md

remote-config.md

storage.md

tile.json