{"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;;"}