UNPKG

@tycoonsystems/tycoon-modules

Version:
1 lines 837 B
import{v4 as uuidv4}from"uuid";class Heartbeat{constructor(t,e){e=e??uuidv4();this.heartbeat=0,this.heartrate=t||1e3,this.name=e,this.id=e,this.events=[],this.interval=setInterval(()=>{this.heartbeat+=1;var e,a=[...this.events];for(let t=0;t<a.length;t++)a[t]&&(a[t].done&&(a.splice(t,1),t--),this.heartbeat*this.heartrate%a[t].runInterval==0)&&a[t].f&&(a[t].f(),e=a[t].timesRan??0,a[t].timesRan=e+1);this.events=a},1e3)}get age(){return this.heartbeat}get name(){return this.name}set name(t){this._name=t}createEvent(t,e,a){var r=[...this.events];r.push({name:t,f:e,createdAtHeartbeat:this.heartbeat,createdAtHeartTime:this.heartbeat*this.heartrate,runInterval:a||this.heartrate}),this.events=r}killEvent(e){var a=[...this.events];for(let t=0;t<a.length;t++)if(a[t].name===e){a[t].done=!0,this.events=a;break}}}export default Heartbeat;