{"version":3,"file":"poller.mjs","names":["timerId: number | undefined","stop: PollerStop","run: PollerRun"],"sources":["../../src/poller.ts"],"sourcesContent":["import { createWorkerTimers } from './workerTimers';\n\nexport type PollerStop = () => void;\nexport type PollerCallback = (stop: PollerStop) => Promise<unknown>;\nexport type PollerRun = (cb: PollerCallback) => Promise<void>;\n\ntype PollerOptions = {\n  delayInMs: number;\n};\n\nexport type Poller = {\n  run: PollerRun;\n  stop: PollerStop;\n};\n\n/**\n *\n */\nexport function Poller({ delayInMs }: PollerOptions = { delayInMs: 1000 }): Poller {\n  const workerTimers = createWorkerTimers();\n\n  let timerId: number | undefined;\n  let stopped = false;\n\n  const stop: PollerStop = () => {\n    if (timerId) {\n      workerTimers.clearTimeout(timerId);\n      workerTimers.cleanup();\n    }\n    stopped = true;\n  };\n\n  const run: PollerRun = async cb => {\n    stopped = false;\n    await cb(stop);\n    if (stopped) {\n      return;\n    }\n\n    timerId = workerTimers.setTimeout(() => {\n      void run(cb);\n    }, delayInMs) as any as number;\n  };\n\n  return { run, stop };\n}\n"],"mappings":";;;;;;;AAkBA,SAAgB,OAAO,EAAE,cAA6B,EAAE,WAAW,KAAM,EAAU;CACjF,MAAM,eAAe,oBAAoB;CAEzC,IAAIA;CACJ,IAAI,UAAU;CAEd,MAAMC,aAAyB;AAC7B,MAAI,SAAS;AACX,gBAAa,aAAa,QAAQ;AAClC,gBAAa,SAAS;;AAExB,YAAU;;CAGZ,MAAMC,MAAiB,OAAM,OAAM;AACjC,YAAU;AACV,QAAM,GAAG,KAAK;AACd,MAAI,QACF;AAGF,YAAU,aAAa,iBAAiB;AACtC,GAAK,IAAI,GAAG;KACX,UAAU;;AAGf,QAAO;EAAE;EAAK;EAAM"}