{"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;\nexport type PollerRun = (cb: PollerCallback) => Promise;\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"}