Types

TypeScript type definitions and utilities for MSR Firebase.

Table of contents

  1. FirebaseDatabase
  2. MigrationStatus
    1. Properties
  3. BackupResult
    1. Properties
  4. RestoreResult
    1. Properties
  5. ValidationResult
    1. Properties
  6. ValidationError
    1. Properties
  7. ValidationWarning
    1. Properties
  8. Generic Database Type
  9. Usage Examples
    1. Using MigrationStatus
    2. Using ValidationResult

FirebaseDatabase

Type alias for Firebase Realtime Database.

type FirebaseDatabase = admin.database.Database;

Used throughout MSR Firebase to represent the Firebase database instance.


MigrationStatus

Status of a migration.

type MigrationStatus = {
  timestamp: number;
  name: string;
  status: 'applied' | 'pending';
  appliedAt?: Date;
};

Properties

  • timestamp: Migration identifier
  • name: Migration file name
  • status: Whether migration is applied or pending
  • appliedAt (optional): When migration was applied

BackupResult

Result of a backup operation.

type BackupResult = {
  backupId: string;
  timestamp: Date;
  size: number;
  path: string;
};

Properties

  • backupId: Unique backup identifier
  • timestamp: When backup was created
  • size: Backup size in bytes
  • path: Location of backup file

RestoreResult

Result of a restore operation.

type RestoreResult = {
  backupId: string;
  timestamp: Date;
  success: boolean;
  error?: string;
};

Properties

  • backupId: Backup that was restored
  • timestamp: When restore was performed
  • success: Whether restore succeeded
  • error (optional): Error message if failed

ValidationResult

Result of migration validation.

type ValidationResult = {
  valid: boolean;
  errors: ValidationError[];
  warnings: ValidationWarning[];
};

Properties

  • valid: Overall validation status
  • errors: Critical validation errors
  • warnings: Non-critical warnings

ValidationError

Validation error details.

type ValidationError = {
  type: 'duplicate' | 'checksum' | 'missing' | 'format';
  message: string;
  migration?: string;
};

Properties

  • type: Type of validation error
  • message: Error description
  • migration (optional): Affected migration file

ValidationWarning

Validation warning details.

type ValidationWarning = {
  type: 'performance' | 'deprecation' | 'suggestion';
  message: string;
  migration?: string;
};

Properties

  • type: Type of warning
  • message: Warning description
  • migration (optional): Affected migration file

Generic Database Type

MSR Firebase uses the generic type parameter IDB to represent the database type:

// In your migrations
IMigrationScript<admin.database.Database>

// In FirebaseRunner
class FirebaseRunner extends MigrationScriptExecutor<admin.database.Database>

This provides full TypeScript type safety for Firebase operations.

Usage Examples

Using MigrationStatus

const statuses: MigrationStatus[] = await runner.list();

statuses.forEach(status => {
  if (status.status === 'pending') {
    console.log(`Pending: ${status.name}`);
  } else {
    console.log(`Applied: ${status.name} at ${status.appliedAt}`);
  }
});

Using ValidationResult

const validation: ValidationResult = await runner.validate();

if (!validation.valid) {
  validation.errors.forEach(error => {
    console.error(`${error.type}: ${error.message}`);
  });
}

validation.warnings.forEach(warning => {
  console.warn(`${warning.type}: ${warning.message}`);
});