failover-sdk
Version:
One-line API failover with zero downtime. Native Rust performance with TypeScript interface.
50 lines • 2.54 kB
JavaScript
;
// 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