UNPKG

@artilleryio/platform-fargate

Version:
1 lines 1.06 kB
"use strict";const EventEmitter=require("events"),driftless=require("driftless");async function sleep(ms){return new Promise(resolve=>setTimeout(resolve,ms))}class Timeout extends EventEmitter{constructor(duration){return super(),this._startedAt=null,this._duration=duration,this}start(){return this._startedAt=Date.now(),this._timeout=driftless.setDriftlessTimeout(()=>{this.emit("timeout")},this._duration),this}stop(){return driftless.clearDriftless(this._timeout),this}timedout(){return Date.now()-this._startedAt>this._duration}}function timeStringToMs(timeStr){var rx=/^([0-9]+).+$/i;if(!rx.test(timeStr))throw new Error("Invalid time string: "+timeStr);let multiplier=0;if(timeStr.endsWith("ms"))multiplier=1;else if(timeStr.endsWith("s"))multiplier=1e3;else if(timeStr.endsWith("m"))multiplier=6e4;else{if(!timeStr.endsWith("h"))throw new Error(`Unknown unit suffix in ${timeStr}. Supported units: ms, s, m, h`);multiplier=36e5}return parseInt(timeStr.match(rx)[0],10)*multiplier}module.exports={Timeout:Timeout,sleep:sleep,timeStringToMs:timeStringToMs};