@tanstack/offline-transactions
Version:
Offline-first transaction capabilities for TanStack DB
1 lines • 1.54 kB
Source Map (JSON)
{"version":3,"file":"LeaderElection.cjs","sources":["../../../src/coordination/LeaderElection.ts"],"sourcesContent":["import type { LeaderElection } from '../types'\n\nexport abstract class BaseLeaderElection implements LeaderElection {\n protected isLeaderState = false\n protected listeners: Set<(isLeader: boolean) => void> = new Set()\n\n abstract requestLeadership(): Promise<boolean>\n abstract releaseLeadership(): void\n\n isLeader(): boolean {\n return this.isLeaderState\n }\n\n onLeadershipChange(callback: (isLeader: boolean) => void): () => void {\n this.listeners.add(callback)\n\n return () => {\n this.listeners.delete(callback)\n }\n }\n\n protected notifyLeadershipChange(isLeader: boolean): void {\n if (this.isLeaderState !== isLeader) {\n this.isLeaderState = isLeader\n\n for (const listener of this.listeners) {\n try {\n listener(isLeader)\n } catch (error) {\n console.warn(`Leadership change listener error:`, error)\n }\n }\n }\n }\n}\n"],"names":[],"mappings":";;AAEO,MAAe,mBAA6C;AAAA,EAA5D,cAAA;AACL,SAAU,gBAAgB;AAC1B,SAAU,gCAAkD,IAAA;AAAA,EAAI;AAAA,EAKhE,WAAoB;AAClB,WAAO,KAAK;AAAA,EACd;AAAA,EAEA,mBAAmB,UAAmD;AACpE,SAAK,UAAU,IAAI,QAAQ;AAE3B,WAAO,MAAM;AACX,WAAK,UAAU,OAAO,QAAQ;AAAA,IAChC;AAAA,EACF;AAAA,EAEU,uBAAuB,UAAyB;AACxD,QAAI,KAAK,kBAAkB,UAAU;AACnC,WAAK,gBAAgB;AAErB,iBAAW,YAAY,KAAK,WAAW;AACrC,YAAI;AACF,mBAAS,QAAQ;AAAA,QACnB,SAAS,OAAO;AACd,kBAAQ,KAAK,qCAAqC,KAAK;AAAA,QACzD;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACF;;"}