API Reference
Complete API reference for backupx TypeScript library.
Main Classes
BackupManager
The primary class for managing backups with automatic configuration discovery and execution.
class BackupManager {
constructor(config: BackupConfig)
async createBackup(): Promise<BackupSummary>
}
Parameters:
config
: BackupConfig - The backup configuration
Returns:
Promise<BackupSummary>
- Summary of backup operations
Example:
const manager = new BackupManager(config)
const summary = await manager.createBackup()
Configuration Types
BackupConfig
Main configuration interface for backupx.
interface BackupConfig {
/** Enable verbose logging output */
verbose: boolean
/** Array of database backup configurations */
databases: DatabaseConfig[]
/** Array of file/directory backup configurations */
files: FileConfig[]
/** Output directory path for backup files */
outputPath?: string
/** Retention policy for automatic cleanup */
retention?: RetentionConfig
}
DatabaseConfig
Union type for all database configurations:
type DatabaseConfig = SQLiteConfig | PostgreSQLConfig | MySQLConfig
SQLiteConfig
interface SQLiteConfig {
type: BackupType.SQLITE
name: string
path: string
verbose?: boolean
compress?: boolean
filename?: string
}
PostgreSQLConfig
interface PostgreSQLConfig {
type: BackupType.POSTGRESQL
name: string
connection: string | PostgreSQLConnection
tables?: string[]
excludeTables?: string[]
includeSchema?: boolean
includeData?: boolean
verbose?: boolean
compress?: boolean
filename?: string
}
interface PostgreSQLConnection {
hostname?: string
port?: number
database: string
username?: string
password?: string
ssl?: boolean
}
MySQLConfig
interface MySQLConfig {
type: BackupType.MYSQL
name: string
connection: string | MySQLConnection
tables?: string[]
excludeTables?: string[]
includeSchema?: boolean
includeData?: boolean
verbose?: boolean
compress?: boolean
filename?: string
}
interface MySQLConnection {
hostname?: string
port?: number
database: string
username?: string
password?: string
ssl?: boolean
}
FileConfig
Configuration for file and directory backups:
interface FileConfig {
name: string
path: string
verbose?: boolean
compress?: boolean
filename?: string
preserveMetadata?: boolean
include?: string[]
exclude?: string[]
followSymlinks?: boolean
maxFileSize?: number
}
RetentionConfig
Configuration for backup retention policies:
interface RetentionConfig {
/** Number of backups to keep (keeps most recent) */
count?: number
/** Maximum age in days (deletes older backups) */
maxAge?: number
}
Result Types
BackupSummary
Summary of all backup operations:
interface BackupSummary {
totalCount: number
successCount: number
failureCount: number
databaseBackups: BackupResult[]
fileBackups: BackupResult[]
duration: number
}
BackupResult
Result of individual backup operation:
interface BackupResult {
type: BackupType
name: string
filename: string
size: number
success: boolean
error?: string
fileCount?: number
}
Enums
BackupType
Enumeration of supported backup types:
enum BackupType {
SQLITE = 'sqlite',
POSTGRESQL = 'postgresql',
MYSQL = 'mysql',
FILE = 'file',
DIRECTORY = 'directory'
}
Individual Backup Functions
Database Functions
backupSQLite
async function backupSQLite(
config: SQLiteConfig,
outputPath: string
): Promise<BackupResult>
backupPostgreSQL
async function backupPostgreSQL(
config: PostgreSQLConfig,
outputPath: string
): Promise<BackupResult>
backupMySQL
async function backupMySQL(
config: MySQLConfig,
outputPath: string
): Promise<BackupResult>
File Functions
backupFile
async function backupFile(
config: FileConfig,
outputPath: string
): Promise<BackupResult>
backupDirectory
async function backupDirectory(
config: FileConfig,
outputPath: string
): Promise<BackupResult>
Utility Functions
createBackup
Convenience function for one-off backups:
async function createBackup(config: BackupConfig): Promise<BackupSummary>
loadConfig
Load configuration from file:
async function loadConfig(configPath?: string): Promise<BackupConfig>
validateConfig
Validate configuration object:
function validateConfig(config: BackupConfig): string[]
Error Handling
BackupError
Custom error class for backup-related errors:
class BackupError extends Error {
public readonly code: string
public readonly details?: any
constructor(message: string, code: string, details?: any) {
super(message)
this.code = code
this.details = details
}
}
Error Codes
Common error codes returned by the library:
CONFIG_INVALID
- Configuration validation failedDATABASE_CONNECTION_FAILED
- Cannot connect to databaseFILE_NOT_FOUND
- Source file/directory not foundPERMISSION_DENIED
- Insufficient permissionsDISK_FULL
- Not enough disk spaceCOMPRESSION_FAILED
- Compression operation failed
Constants
Default Values
export const DEFAULT_OUTPUT_PATH = './backups'
export const DEFAULT_COMPRESSION = true
export const DEFAULT_INCLUDE_SCHEMA = true
export const DEFAULT_INCLUDE_DATA = true
export const DEFAULT_PRESERVE_METADATA = false
export const DEFAULT_FOLLOW_SYMLINKS = false
export const DEFAULT_MAX_FILE_SIZE = 100 * 1024 * 1024 // 100MB
export const DEFAULT_RETENTION_COUNT = 10
export const DEFAULT_RETENTION_MAX_AGE = 30 // days
File Extensions
export const BACKUP_EXTENSIONS = {
SQL: '.sql',
ARCHIVE: '.tar',
COMPRESSED_ARCHIVE: '.tar.gz',
COMPRESSED: '.gz',
METADATA: '.meta'
}
Type Guards
isBackupResult
function isBackupResult(obj: any): obj is BackupResult {
return obj
&& typeof obj.type === 'string'
&& typeof obj.name === 'string'
&& typeof obj.success === 'boolean'
}
isDatabaseConfig
function isDatabaseConfig(config: any): config is DatabaseConfig {
return config
&& typeof config.type === 'string'
&& [BackupType.SQLITE, BackupType.POSTGRESQL, BackupType.MYSQL].includes(config.type)
}
isFileConfig
function isFileConfig(config: any): config is FileConfig {
return config
&& typeof config.name === 'string'
&& typeof config.path === 'string'
}
CLI Integration
CLI Command Type
interface CLICommand {
command: string
description: string
options: CLIOption[]
action: (args: any) => Promise<void>
}
CLI Option Type
interface CLIOption {
flags: string
description: string
defaultValue?: any
}
Examples
Basic Usage
import { BackupManager, BackupType } from 'backupx'
const config = {
verbose: true,
outputPath: './backups',
databases: [
{
type: BackupType.SQLITE,
name: 'app-db',
path: './database.sqlite'
}
],
files: [
{
name: 'uploads',
path: './uploads'
}
]
}
const manager = new BackupManager(config)
const summary = await manager.createBackup()
console.log(`Backup completed: ${summary.successCount}/${summary.totalCount}`)
Individual Function Usage
import { backupFile, backupSQLite } from 'backupx'
// Database backup
const dbResult = await backupSQLite({
type: BackupType.SQLITE,
name: 'my-db',
path: './database.sqlite',
compress: true
}, './backups')
// File backup
const fileResult = await backupFile({
name: 'config',
path: './config.json',
preserveMetadata: true
}, './backups')
Error Handling
import { BackupError, BackupErrorCode } from 'backupx'
try {
await manager.createBackup()
}
catch (error) {
if (error instanceof BackupError) {
console.error(`Backup failed: ${error.code} - ${error.message}`)
console.error('Details:', error.details)
}
}
Version History
v1.0.0
- Initial release with SQLite, PostgreSQL, MySQL support
- File and directory backup capabilities
- Compression and retention policies
- CLI interface
TypeScript Support
backupx is written in TypeScript and provides full type definitions. All interfaces and types are exported for use in your TypeScript projects.
// Import types for your own functions
import type {
BackupConfig,
BackupResult,
BackupSummary,
DatabaseConfig,
FileConfig
} from 'backupx'
function processBackupResults(results: BackupResult[]): void {
// TypeScript will provide full intellisense
results.forEach((result) => {
if (result.success) {
console.log(`✅ ${result.name}: ${result.size} bytes`)
}
else {
console.error(`❌ ${result.name}: ${result.error}`)
}
})
}