UNPKG

failover-sdk

Version:

One-line API failover with zero downtime. Native Rust performance with TypeScript interface.

50 lines 2.54 kB
"use strict"; // Main registration hook - runs immediately when imported Object.defineProperty(exports, "__esModule", { value: true }); exports.initializeFailover = initializeFailover; const config_loader_1 = require("./config-loader"); const provider_override_1 = require("./provider-override"); /** * Initialize Failover system * This runs automatically when 'failover/register' is imported */ async function initializeFailover(config) { try { console.log('[Failover] Initializing intelligent API failover system...'); // Auto-load configuration from files if no explicit config provided let finalConfig = config; if (!finalConfig) { finalConfig = (await (0, config_loader_1.autoLoadConfig)()) || undefined; } // Apply local configuration if available if (finalConfig) { (0, config_loader_1.setLocalConfig)(finalConfig); } // Get project ID from config, environment, or default const projectId = finalConfig?.projectId || process.env.FAILOVER_PROJECT_ID || 'local'; if (projectId === 'local' && !config) { console.log('[Failover] Using local-only mode (no SaaS project ID required)'); } // Step 1: Start background config refresh (every 60 seconds) console.log('[Failover] Starting config refresh...'); await (0, config_loader_1.startConfigRefresh)(projectId); // Step 2: Setup fast path - override provider selection based on cached config console.log('[Failover] Setting up provider overrides...'); (0, provider_override_1.setupProviderOverrides)(); // Step 3: Setup safety net - HTTP interceptor for double failures console.log('[Failover] Setting up fallback interceptor...'); (0, provider_override_1.setupFallbackInterceptor)(); console.log('[Failover] ✅ Initialization complete! Your APIs now have intelligent failover.'); console.log('[Failover] 🔍 Monitor your failover events at https://dashboard.failover.dev'); } catch (error) { console.error('[Failover] ❌ Initialization failed:', error); console.error('[Failover] Your APIs will continue to work normally without failover protection.'); } } // Auto-initialize when this module is imported // This is the "magic" that happens when user adds: import 'failover/register' initializeFailover().catch(error => { console.error('[Failover] Critical initialization error:', error); }); //# sourceMappingURL=register.js.map