UNPKG

@tanstack/offline-transactions

Version:

Offline-first transaction capabilities for TanStack DB

36 lines (28 loc) 897 B
import type { LeaderElection } from '../types' export abstract class BaseLeaderElection implements LeaderElection { protected isLeaderState = false protected listeners: Set<(isLeader: boolean) => void> = new Set() abstract requestLeadership(): Promise<boolean> abstract releaseLeadership(): void isLeader(): boolean { return this.isLeaderState } onLeadershipChange(callback: (isLeader: boolean) => void): () => void { this.listeners.add(callback) return () => { this.listeners.delete(callback) } } protected notifyLeadershipChange(isLeader: boolean): void { if (this.isLeaderState !== isLeader) { this.isLeaderState = isLeader for (const listener of this.listeners) { try { listener(isLeader) } catch (error) { console.warn(`Leadership change listener error:`, error) } } } } }